summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-06-28 19:28:34 +0200
committerChantry Xavier <shiningxc@gmail.com>2007-06-28 19:29:38 +0200
commit2657a2bfb7847c8ac4dd5875979400d0d3fd89f6 (patch)
treef92d12b4f9fa2353d0af4bba99badbb6af58bdfe /lib
parent1a3b3bc1300b42dc2f554a6faa09b5ece2d3321c (diff)
downloadpacman-2657a2bfb7847c8ac4dd5875979400d0d3fd89f6.tar.gz
pacman-2657a2bfb7847c8ac4dd5875979400d0d3fd89f6.tar.xz
libalpm/add.c : ignore libarchive warning.
With libarchive 2.2.3 (previously 1.3.1), archive_read_extract now returns ARCHIVE_WARN when a package is extracted as user, because for example, UID=0 or SUID bit can't be set. This patch makes pacman not treating these warnings as errors anymore, but simply ignoring them. Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/libalpm/add.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index b6a54b7f..1ebf455a 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -544,11 +544,12 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
archive_entry_set_pathname(entry, tempfile);
- if(archive_read_extract(archive, entry, archive_flags) != ARCHIVE_OK) {
+ int ret = archive_read_extract(archive, entry, archive_flags);
+ if(ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
_alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"),
- entryname, strerror(errno));
+ entryname, archive_error_string(archive));
alpm_logaction(_("could not extract %s (%s)"),
- entryname, strerror(errno));
+ entryname, archive_error_string(archive));
errors++;
unlink(tempfile);
FREE(hash_orig);
@@ -699,10 +700,14 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
archive_entry_set_pathname(entry, filename);
- if(archive_read_extract(archive, entry, archive_flags) != ARCHIVE_OK) {
- _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"), filename, strerror(errno));
- alpm_logaction(_("error: could not extract %s (%s)"), filename, strerror(errno));
+ int ret = archive_read_extract(archive, entry, archive_flags);
+ if(ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
+ _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"),
+ entryname, archive_error_string(archive));
+ alpm_logaction(_("could not extract %s (%s)"),
+ entryname, archive_error_string(archive));
errors++;
+ continue;
}
/* calculate an hash if this is in newpkg's backup */