summaryrefslogtreecommitdiff
path: root/lib/libalpm/util.c
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-07-02 02:12:36 +0200
committerDan McGee <dan@archlinux.org>2007-07-01 22:31:40 -0400
commitf55f7f100f650ff040f8721cf761a060af1c05fe (patch)
treeacfd01ac99594f8fa49e59782bce0c5e8598701a /lib/libalpm/util.c
parentcd3a63681338b7510846837dcc169d276cf75458 (diff)
downloadpacman-f55f7f100f650ff040f8721cf761a060af1c05fe.tar.xz
libalpm/add.c,util.c : log ARCHIVE_WARN warning to debug output.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Diffstat (limited to 'lib/libalpm/util.c')
-rw-r--r--lib/libalpm/util.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index 66702691..17872429 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -327,15 +327,24 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
}
while(archive_read_next_header(_archive, &entry) == ARCHIVE_OK) {
- if (fn && strcmp(fn, archive_entry_pathname(entry))) {
+ const char *entryname; /* the name of the file in the archive */
+ entryname = archive_entry_pathname(entry);
+
+ if (fn && strcmp(fn, entryname)) {
if (archive_read_data_skip(_archive) != ARCHIVE_OK)
return(1);
continue;
}
- snprintf(expath, PATH_MAX, "%s/%s", prefix, archive_entry_pathname(entry));
+ snprintf(expath, PATH_MAX, "%s/%s", prefix, entryname);
archive_entry_set_pathname(entry, expath);
- if(archive_read_extract(_archive, entry, archive_flags) != ARCHIVE_OK) {
- _alpm_log(PM_LOG_ERROR, _("could not extract %s: %s\n"), archive_entry_pathname(entry), archive_error_string(_archive));
+ int ret = archive_read_extract(_archive, entry, archive_flags);
+ if(ret == ARCHIVE_WARN) {
+ /* operation succeeded but a non-critical error was encountered */
+ _alpm_log(PM_LOG_DEBUG, _("warning extracting %s (%s)\n"),
+ entryname, archive_error_string(_archive));
+ } else if(ret != ARCHIVE_OK) {
+ _alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
+ entryname, archive_error_string(_archive));
return(1);
}