}
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;
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;
}
}
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);
}
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);
}
/*
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)
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) {