From: Michael Tremer Date: Wed, 7 Apr 2021 16:44:15 +0000 (+0000) Subject: archive: Add pointer argument to archive walk X-Git-Tag: 0.9.28~1285^2~396 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0bcedf16e237011590c92ecdccf3bc787c158493;p=pakfire.git archive: Add pointer argument to archive walk Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 26ea5cde0..b7fa3ffd7 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -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) {