summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/add.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm/add.c')
-rw-r--r--lib/libalpm/add.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index efcfedd4..9ffc8349 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -284,7 +284,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
struct archive *archive;
struct archive_entry *entry;
char cwd[PATH_MAX] = "";
- alpm_list_t *targ, *lp;
+ alpm_list_t *targ;
const int archive_flags = ARCHIVE_EXTRACT_OWNER |
ARCHIVE_EXTRACT_PERM |
ARCHIVE_EXTRACT_TIME;
@@ -383,7 +383,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
/* copy the remove skiplist over */
tr->skip_remove = alpm_list_strdup(trans->skip_remove);
- alpm_list_t *b;
+ const alpm_list_t *b;
/* Add files in the NEW package's backup array to the noupgrade array
* so this removal operation doesn't kill them */
@@ -557,14 +557,17 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
hash_pkg = _alpm_SHAFile(tempfile);
}
- /* append the new md5 or sha1 hash to it's respective entry in newpkg's backup
- * (it will be the new orginal) */
- for(lp = alpm_pkg_get_backup(newpkg); lp; lp = lp->next) {
- if(!lp->data || strcmp(lp->data, entryname) != 0) {
+ /* append the new md5 or sha1 hash to it's respective entry
+ * in newpkg's backup (it will be the new orginal) */
+ alpm_list_t *backups;
+ for(backups = alpm_pkg_get_backup(newpkg); backups;
+ backups = alpm_list_next(backups)) {
+ char *oldbackup = alpm_list_getdata(backups);
+ if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
continue;
}
char *backup = NULL;
- int backup_len = strlen(lp->data) + 2; /* tab char and null byte */
+ int backup_len = strlen(oldbackup) + 2; /* tab char and null byte */
if(use_md5) {
backup_len += 32; /* MD5s are 32 chars in length */
@@ -577,10 +580,10 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
RET_ERR(PM_ERR_MEMORY, -1);
}
- sprintf(backup, "%s\t%s", (char *)lp->data, hash_pkg);
+ sprintf(backup, "%s\t%s", oldbackup, hash_pkg);
backup[backup_len-1] = '\0';
- FREE(lp->data);
- lp->data = backup;
+ FREE(oldbackup);
+ backups->data = backup;
}
if(use_md5) {
@@ -698,11 +701,13 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
}
/* calculate an hash if this is in newpkg's backup */
- for(lp = alpm_pkg_get_backup(newpkg); lp; lp = lp->next) {
+ alpm_list_t *b;
+ for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
char *backup = NULL, *hash = NULL;
- int backup_len = strlen(lp->data) + 2; /* tab char and null byte */
+ char *oldbackup = alpm_list_getdata(b);
+ int backup_len = strlen(oldbackup) + 2; /* tab char and null byte */
- if(!lp->data || strcmp(lp->data, entryname) != 0) {
+ if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
continue;
}
_alpm_log(PM_LOG_DEBUG, _("appending backup entry for %s"), filename);
@@ -720,11 +725,11 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
RET_ERR(PM_ERR_MEMORY, -1);
}
- sprintf(backup, "%s\t%s", (char *)lp->data, hash);
+ sprintf(backup, "%s\t%s", oldbackup, hash);
backup[backup_len-1] = '\0';
FREE(hash);
- FREE(lp->data);
- lp->data = backup;
+ FREE(oldbackup);
+ b->data = backup;
}
}
}