From 457943f83e21bde7e6858884d25bc89934344a52 Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Wed, 4 Mar 2009 08:27:06 +0200 Subject: apk: --clean-protected option So you will not get .apk-new files of the new configuration files. --- src/database.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/database.c') diff --git a/src/database.c b/src/database.c index f6b66c4..108c3ab 100644 --- a/src/database.c +++ b/src/database.c @@ -1066,19 +1066,17 @@ static int apk_db_install_archive_entry(void *_ctx, printf("%s\n", ae->name); if ((diri->dir->flags & APK_DBDIRF_PROTECTED) && - apk_file_get_info(ae->name, &fi) == 0) { + apk_file_get_info(ae->name, &fi) == 0 && + (memcmp(file->csum, fi.csum, sizeof(csum_t)) == 0 || + !csum_valid(file->csum))) { /* Protected file. Extract to separate place */ - snprintf(alt_name, sizeof(alt_name), - "%s/%s.apk-new", - diri->dir->dirname, file->filename); - r = apk_archive_entry_extract(ae, is, alt_name, - extract_cb, ctx); - if (memcmp(ae->csum, fi.csum, sizeof(csum_t)) == 0) { - /* not modified locally. rename to original */ - if (rename(alt_name, ae->name) < 0) - apk_warning("%s: %s", ae->name, - strerror(errno)); - } + if (!apk_clean) { + snprintf(alt_name, sizeof(alt_name), + "%s/%s.apk-new", + diri->dir->dirname, file->filename); + r = apk_archive_entry_extract(ae, is, alt_name, + extract_cb, ctx); + } } else { r = apk_archive_entry_extract(ae, is, NULL, extract_cb, ctx); -- cgit v1.2.3-60-g2f50