From: Michael Tremer Date: Mon, 21 Oct 2024 18:23:46 +0000 (+0000) Subject: archive: Use convenience function to open and walk through the archive X-Git-Tag: 0.9.30~969 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e9466671ad03fb17466b9978608282643eb3a544;p=pakfire.git archive: Use convenience function to open and walk through the archive Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 555cd23a7..004b246a6 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -346,7 +346,8 @@ static int pakfire_archive_walk(struct pakfire_archive* archive, struct archive* } static int pakfire_archive_open_and_walk(struct pakfire_archive* archive, - pakfire_archive_walk_callback walk_callback, pakfire_archive_walk_filter_callback filter_callback, void* data) { + pakfire_archive_walk_callback walk_callback, + pakfire_archive_walk_filter_callback filter_callback, void* data) { struct archive* a = NULL; int r; @@ -615,48 +616,35 @@ static int __pakfire_archive_filter_metadata(struct pakfire_archive* archive, } static int pakfire_archive_read_metadata(struct pakfire_archive* archive) { - struct archive* a = NULL; int r; CTX_DEBUG(archive->ctx, "Reading archive metadata...\n"); - // Open the archive - r = pakfire_archive_open_archive(archive, &a); - if (r < 0) - goto ERROR; - // Check if the archive file actually has any contect if (!archive->stat.st_size) { CTX_ERROR(archive->ctx, "Trying to open an empty archive file\n"); - r = -EINVAL; - goto ERROR; + return -EINVAL; } // Walk through the archive - r = pakfire_archive_walk(archive, a, + r = pakfire_archive_open_and_walk(archive, __pakfire_archive_read_metadata, __pakfire_archive_filter_metadata, NULL); - if (r) - goto ERROR; + if (r < 0) + return r; // Check if we could successfully read something if (!archive->format) { CTX_DEBUG(archive->ctx, "Archive has an unknown format\n"); - r = -ENOMSG; - goto ERROR; + return -ENOMSG; } // Check if we have read some metadata if (!archive->metadata) { CTX_DEBUG(archive->ctx, "Archive has no metadata\n"); - r = -ENOMSG; - goto ERROR; + return -ENOMSG; } -ERROR: - if (a) - archive_read_close(a); - - return r; + return 0; } PAKFIRE_EXPORT int pakfire_archive_open(struct pakfire_archive** archive, @@ -1810,21 +1798,9 @@ ERROR: } int pakfire_archive_apply_systemd_sysusers(struct pakfire_archive* archive) { - struct archive* a = NULL; - int r; - - // Open the archive - r = pakfire_archive_open_archive(archive, &a); - if (r < 0) - goto ERROR; - - pakfire_archive_walk(archive, a, pakfire_archive_handle_systemd_sysusers, + pakfire_archive_open_and_walk(archive, pakfire_archive_handle_systemd_sysusers, pakfire_archive_filter_systemd_sysusers, NULL); -ERROR: - if (a) - archive_read_free(a); - return 0; }