From: Michael Tremer Date: Tue, 11 Jun 2019 04:11:42 +0000 (+0100) Subject: libpakfire: archive: Evaluate options when we could not commit all metadata X-Git-Tag: 0.9.28~1285^2~932 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f86bb6bc92a1f83a5d86a46d6ffd731233d53f8e;p=pakfire.git libpakfire: archive: Evaluate options when we could not commit all metadata Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index d1eef79dd..beb4cbe46 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -630,8 +630,8 @@ static int archive_extract(Pakfire pakfire, struct archive* a, const char* prefi // Create file r = archive_write_header(ext, entry); if (r != ARCHIVE_OK) { - ERROR(pakfire, "Could not extract file %s: %s\n", - pathname, archive_error_string(ext)); + ERROR(pakfire, "Could not extract file /%s: %s\n", + archive_pathname, archive_error_string(ext)); break; } @@ -644,6 +644,26 @@ static int archive_extract(Pakfire pakfire, struct archive* a, const char* prefi // Commit to disk r = archive_write_finish_entry(ext); + switch (r) { + case ARCHIVE_OK: + continue; + + // A retry of this action might be successful + case ARCHIVE_RETRY: + r = archive_write_finish_entry(ext); + break; + + case ARCHIVE_WARN: + DEBUG(pakfire, "/%s: %s\n", + archive_pathname, archive_error_string(ext)); + continue; + + case ARCHIVE_FAILED: + ERROR(pakfire, "/%s: %s\n", + archive_pathname, archive_error_string(ext)); + break; + } + if (r != ARCHIVE_OK) break; }