]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Add pointer argument to archive walk
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Apr 2021 16:44:15 +0000 (16:44 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 7 Apr 2021 16:44:15 +0000 (16:44 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 26ea5cde01afbff2705cbd20e65a340a2b1fcbb4..b7fa3ffd73c0a78b86ef616962bf8d23e034e8f1 100644 (file)
@@ -546,7 +546,8 @@ static int pakfire_archive_parse_entry_scriptlet(PakfireArchive archive,
 }
 
 static int pakfire_archive_walk(PakfireArchive archive,
-               int (*callback)(PakfireArchive archive, struct archive* a, struct archive_entry* e, const char* pathname)) {
+               int (*callback)(PakfireArchive archive, struct archive* a, struct archive_entry* e, void* data),
+               void* data) {
        struct archive* a;
        struct archive_entry* e;
 
@@ -561,11 +562,8 @@ static int pakfire_archive_walk(PakfireArchive archive,
                if (r)
                        break;
 
-               // Fetch the filename
-               const char* pathname = archive_entry_pathname(e);
-
                // Run callback
-               r = callback(archive, a, e, pathname);
+               r = callback(archive, a, e, data);
                if (r)
                        break;
        }
@@ -577,9 +575,11 @@ static int pakfire_archive_walk(PakfireArchive archive,
 }
 
 static int pakfire_archive_read_metadata_entry(PakfireArchive archive, struct archive* a,
-               struct archive_entry* e, const char* entry_name) {
+               struct archive_entry* e, void* data) {
        int ret;
 
+       const char* entry_name = archive_entry_pathname(e);
+
        // Parse the checksums
        if (strcmp(PAKFIRE_ARCHIVE_FN_CHECKSUMS, entry_name) == 0) {
                ret = pakfire_archive_parse_entry_checksums(archive, a, e);
@@ -597,7 +597,7 @@ static int pakfire_archive_read_metadata_entry(PakfireArchive archive, struct ar
 }
 
 static int pakfire_archive_read_metadata(PakfireArchive archive, struct archive* a) {
-       return pakfire_archive_walk(archive, pakfire_archive_read_metadata_entry);
+       return pakfire_archive_walk(archive, pakfire_archive_read_metadata_entry, NULL);
 }
 
 /*
@@ -927,7 +927,9 @@ static int pakfire_archive_parse_entry_signature(PakfireArchive archive,
        return 0;
 }
 
-static int pakfire_archive_read_signature_entry(PakfireArchive archive, struct archive* a, struct archive_entry* e, const char* entry_name) {
+static int pakfire_archive_read_signature_entry(PakfireArchive archive, struct archive* a, struct archive_entry* e, void* data) {
+       const char* entry_name = archive_entry_pathname(e);
+
        if (strncmp(PAKFIRE_ARCHIVE_FN_SIGNATURES, entry_name, strlen(PAKFIRE_ARCHIVE_FN_SIGNATURES)) == 0) {
                int ret = pakfire_archive_parse_entry_signature(archive, a, e);
                if (ret)
@@ -940,7 +942,7 @@ static int pakfire_archive_read_signature_entry(PakfireArchive archive, struct a
 static int pakfire_archive_load_signatures(PakfireArchive archive) {
        DEBUG(archive->pakfire, "Loading all signatures for archive at %p\n", archive);
 
-       return pakfire_archive_walk(archive, pakfire_archive_read_signature_entry);
+       return pakfire_archive_walk(archive, pakfire_archive_read_signature_entry, NULL);
 }
 
 PAKFIRE_EXPORT PakfireArchiveSignature* pakfire_archive_get_signatures(PakfireArchive archive) {