index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Dan McGee <dan@archlinux.org> | 2008-04-08 18:38:54 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2008-04-08 18:55:22 -0500 |
commit | 4b7f7e2a59457aa881ae883b6d102f9fc62e2ed8 (patch) | |
tree | ec123b965246d538ef8c9e6ce37f2baee81df298 /lib/libalpm/add.c | |
parent | bec2ba5b4005053ce8f7048fa825ed58e3adfdc2 (diff) |
-rw-r--r-- | lib/libalpm/add.c | 10 |
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c index 42015224..0a1a1924 100644 --- a/lib/libalpm/add.c +++ b/lib/libalpm/add.c @@ -446,7 +446,7 @@ static int extract_single_file(struct archive *archive, } if(needbackup) { - char *tempfile = NULL; + char *tempfile; char *hash_local = NULL, *hash_pkg = NULL; int fd; @@ -454,9 +454,8 @@ static int extract_single_file(struct archive *archive, tempfile = strdup("/tmp/alpm_XXXXXX"); fd = mkstemp(tempfile); - archive_entry_set_pathname(entry, tempfile); - - int ret = archive_read_extract(archive, entry, archive_flags); + int ret = archive_read_data_into_fd(archive, fd); + close(fd); if(ret == ARCHIVE_WARN) { /* operation succeeded but a non-critical error was encountered */ _alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n", @@ -467,8 +466,8 @@ static int extract_single_file(struct archive *archive, alpm_logaction("error: could not extract %s (%s)\n", entryname, archive_error_string(archive)); unlink(tempfile); + FREE(tempfile); FREE(hash_orig); - close(fd); return(1); } @@ -578,7 +577,6 @@ static int extract_single_file(struct archive *archive, FREE(hash_orig); unlink(tempfile); FREE(tempfile); - close(fd); } else { /* we didn't need a backup */ if(notouch) { |