summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/add.c
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2008-01-05 13:09:06 +0100
committerDan McGee <dan@archlinux.org>2008-01-05 20:47:49 +0100
commit601a85082d2965174925a85942e9e8a5a0e9f735 (patch)
tree599daa86533b795e3b130bac6f291ee8f03593f7 /lib/libalpm/add.c
parent04472f925a09e8760946097afc26a492af309d65 (diff)
downloadpacman-601a85082d2965174925a85942e9e8a5a0e9f735.tar.gz
pacman-601a85082d2965174925a85942e9e8a5a0e9f735.tar.xz
add.c : fix upgrade026 pactest.
This was the case of the bash packaging error where a file was removed from the package but not the backup array. I just added a sanity check so that only the files from the backup array that are also in the filelist are used. I had to edit upgrade026 pactest slightly : it required the file to be copied to .pacsave instead of moved. But just moving it should be enough, as we agreed on the ML : http://www.archlinux.org/pipermail/pacman-dev/2007-December/010440.html Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/add.c')
-rw-r--r--lib/libalpm/add.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index f1b310d8..ec49c2a3 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -238,8 +238,13 @@ static int upgrade_remove(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans, pm
* so this removal operation doesn't kill them */
alpm_list_t *old_noupgrade = alpm_list_strdup(handle->noupgrade);
/* old package backup list */
+ alpm_list_t *filelist = alpm_pkg_get_files(newpkg);
for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
char *backup = _alpm_backup_file(b->data);
+ /* safety check (fix the upgrade026 pactest) */
+ if(!alpm_list_find_str(filelist, backup)) {
+ continue;
+ }
_alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
backup);
handle->noupgrade = alpm_list_add(handle->noupgrade,