]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Use convenience function to open and walk through the archive
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Oct 2024 18:23:46 +0000 (18:23 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Oct 2024 18:23:46 +0000 (18:23 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 555cd23a70faba322cbbc08ff85e8c4092b3fc7e..004b246a6cfa23f1c18e980f4505a07646865ff6 100644 (file)
@@ -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;
 }