From: Michael Tremer Date: Sun, 20 Oct 2024 10:19:22 +0000 (+0000) Subject: archive: Minor code cleanups X-Git-Tag: 0.9.30~980 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f6bcfbea904a37ce59ca168361204417861a12f2;p=pakfire.git archive: Minor code cleanups No functional changes. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 8e40b4809..36c27a063 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -119,14 +119,6 @@ static int pakfire_archive_compute_digests(struct pakfire_archive* archive) { return r; } -/* - A helper function to close the archive and reset our data structures -*/ -static void close_archive(struct pakfire_archive* archive, struct archive* a) { - if (a) - archive_read_free(a); -} - /* A helper function that opens the archive for reading */ @@ -158,7 +150,8 @@ static struct archive* open_archive(struct pakfire_archive* archive, FILE* f) { return a; ERROR: - close_archive(archive, a); + if (a) + archive_read_free(a); return NULL; } @@ -177,7 +170,7 @@ static int pakfire_archive_walk(struct pakfire_archive* archive, // Close the archive if (a) - close_archive(archive, a); + archive_read_free(a); return r; } @@ -204,21 +197,6 @@ static void pakfire_archive_free(struct pakfire_archive* archive) { free(archive); } -static int pakfire_archive_create(struct pakfire_archive** archive, struct pakfire* pakfire) { - struct pakfire_archive* a = calloc(1, sizeof(*a)); - if (!a) - return ENOMEM; - - // Store a reference to the context - a->ctx = pakfire_ctx(pakfire); - - a->pakfire = pakfire_ref(pakfire); - a->nrefs = 1; - - *archive = a; - return 0; -} - PAKFIRE_EXPORT struct pakfire_archive* pakfire_archive_ref(struct pakfire_archive* archive) { ++archive->nrefs; @@ -481,19 +459,10 @@ static int pakfire_archive_read_metadata(struct pakfire_archive* archive) { return 0; } -static int pakfire_archive_try_open(struct pakfire_archive* archive, const char* path) { +static int pakfire_archive_try_open(struct pakfire_archive* archive) { int r; - // Check inputs - if (!path) - return -EINVAL; - - CTX_DEBUG(archive->ctx, "Opening archive %s\n", path); - - // Store path - r = pakfire_string_set(archive->path, path); - if (r < 0) - return r; + CTX_DEBUG(archive->ctx, "Opening archive %s\n", archive->path); // Open the file (and keep the file descriptor open) archive->f = fopen(archive->path, "r"); @@ -509,31 +478,48 @@ static int pakfire_archive_try_open(struct pakfire_archive* archive, const char* r = fstat(fileno(archive->f), &archive->stat); if (r) { CTX_ERROR(archive->ctx, "Could not stat archive: %m\n"); - return r; + return -errno; } // Read all package metadata - r = pakfire_archive_read_metadata(archive); - if (r < 0) - return r; - - return 0; + return pakfire_archive_read_metadata(archive); } -PAKFIRE_EXPORT int pakfire_archive_open(struct pakfire_archive** archive, struct pakfire* pakfire, const char* path) { - int r = pakfire_archive_create(archive, pakfire); - if (r) +PAKFIRE_EXPORT int pakfire_archive_open(struct pakfire_archive** archive, + struct pakfire* pakfire, const char* path) { + struct pakfire_archive* a = NULL; + int r; + + // Allocate a new object + a = calloc(1, sizeof(*a)); + if (!a) + return -errno; + + // Store a reference to the context + a->ctx = pakfire_ctx(pakfire); + + // Store a reference to pakfire + a->pakfire = pakfire_ref(pakfire); + + // Initialize the reference counter + a->nrefs = 1; + + // Store path + r = pakfire_string_set(a->path, path); + if (r < 0) return r; - r = pakfire_archive_try_open(*archive, path); - if (r) + // Try to open the archive + r = pakfire_archive_try_open(a); + if (r < 0) goto ERROR; - return 0; + // Return the pointer + *archive = pakfire_archive_ref(a); ERROR: - pakfire_archive_unref(*archive); - *archive = NULL; + if (a) + pakfire_archive_unref(a); return r; } @@ -960,7 +946,7 @@ ERROR: if (pkg) pakfire_package_unref(pkg); if (a) - close_archive(archive, a); + archive_read_free(a); return r; }