|
|
2a5b6a |
From 3c99b06c7776345cfc3a3d4fd0c59fe671644317 Mon Sep 17 00:00:00 2001
|
|
|
2a5b6a |
From: Lubos Kardos <lkardos@redhat.com>
|
|
|
2a5b6a |
Date: Wed, 21 Oct 2015 15:25:47 +0200
|
|
|
2a5b6a |
Subject: [PATCH] Overwrite a file if it is not marked as config any more.
|
|
|
2a5b6a |
|
|
|
2a5b6a |
If a file was marked as config in the previous version of a package but
|
|
|
2a5b6a |
it is not marked as config in currently being installed version of
|
|
|
2a5b6a |
the package then backup the old file as .rpmsave and overwrite it with
|
|
|
2a5b6a |
the new file. (rhbz:1263859)
|
|
|
2a5b6a |
---
|
|
|
2a5b6a |
lib/rpmfi.c | 12 ++++++++++++
|
|
|
2a5b6a |
1 file changed, 12 insertions(+)
|
|
|
2a5b6a |
|
|
|
2a5b6a |
diff --git a/lib/rpmfi.c b/lib/rpmfi.c
|
|
|
2a5b6a |
index 924ff4b..28a697e 100644
|
|
|
2a5b6a |
--- a/lib/rpmfi.c
|
|
|
2a5b6a |
+++ b/lib/rpmfi.c
|
|
|
2a5b6a |
@@ -1040,6 +1040,12 @@ rpmFileAction rpmfilesDecideFate(rpmfiles ofi, int oix,
|
|
|
2a5b6a |
goto exit; /* file identical in new, replace. */
|
|
|
2a5b6a |
}
|
|
|
2a5b6a |
|
|
|
2a5b6a |
+ /* if new file is no longer config, backup it and replace it */
|
|
|
2a5b6a |
+ if (!(newFlags & RPMFILE_CONFIG)) {
|
|
|
2a5b6a |
+ action = FA_SAVE;
|
|
|
2a5b6a |
+ goto exit;
|
|
|
2a5b6a |
+ }
|
|
|
2a5b6a |
+
|
|
|
2a5b6a |
/* If file can be determined identical in old and new pkg, let it be */
|
|
|
2a5b6a |
if (newWhat == REG && oalgo == nalgo && odiglen == ndiglen) {
|
|
|
2a5b6a |
if (odigest && ndigest && memcmp(odigest, ndigest, odiglen) == 0) {
|
|
|
2a5b6a |
@@ -1071,6 +1077,12 @@ rpmFileAction rpmfilesDecideFate(rpmfiles ofi, int oix,
|
|
|
2a5b6a |
goto exit; /* unmodified config file, replace. */
|
|
|
2a5b6a |
}
|
|
|
2a5b6a |
|
|
|
2a5b6a |
+ /* if new file is no longer config, backup it and replace it */
|
|
|
2a5b6a |
+ if (!(newFlags & RPMFILE_CONFIG)) {
|
|
|
2a5b6a |
+ action = FA_SAVE;
|
|
|
2a5b6a |
+ goto exit;
|
|
|
2a5b6a |
+ }
|
|
|
2a5b6a |
+
|
|
|
2a5b6a |
/* If link is identical in old and new pkg, let it be */
|
|
|
2a5b6a |
if (newWhat == LINK && oFLink && nFLink && rstreq(oFLink, nFLink)) {
|
|
|
2a5b6a |
action = FA_SKIP; /* identical file, don't bother. */
|
|
|
2a5b6a |
--
|
|
|
2a5b6a |
2.5.5
|
|
|
2a5b6a |
|