From: Michael Tremer Date: Wed, 7 Apr 2021 09:35:08 +0000 (+0000) Subject: archive: Refactor opening the archive X-Git-Tag: 0.9.28~1285^2~412 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc7feea4382e042be754b95b557192d6f2a1efbf;p=pakfire.git archive: Refactor opening the archive Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index affd549d5..6c761a90a 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -110,20 +110,23 @@ static void configure_archive(struct archive* a) { static int archive_open(PakfireArchive archive, struct archive** a) { *a = archive_read_new(); - configure_archive(*a); - - if (archive_read_open_filename(*a, archive->path, BLOCKSIZE) == ARCHIVE_OK) { - return 0; - } + if (!*a) + return ENOMEM; - // Log error message - const char* error = archive_error_string(*a); - DEBUG(archive->pakfire, "Could not open archive: %s\n", error); + // All packages must be uncompressed tar balls + archive_read_support_format_tar(*a); - archive_read_free(*a); - *a = NULL; + // Try opening the archive file + int r = archive_read_open_filename(*a, archive->path, 8192); + if (r) { + ERROR(archive->pakfire, "Could not open archive %s: %s\n", + archive->path, archive_error_string(*a)); + archive_read_free(*a); + *a = NULL; + return r; + } - return -1; + return 0; } static void archive_close(struct archive* a) {