}
static int pakfire_archive_walk_entries(struct pakfire_archive* archive, struct archive* a,
- int (*callback)(struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data),
- void* data, off_t* offset) {
+ int (*callback)(struct pakfire_archive* archive, struct archive* a,
+ struct archive_entry* e, int flags, void* data),
+ int flags, void* data, off_t* offset) {
struct archive_entry* e = NULL;
// Walk through the archive
// Run callback
if (callback) {
- r = callback(archive, a, e, data);
+ r = callback(archive, a, e, flags, data);
if (r)
return r;
}
}
static int pakfire_archive_walk(struct pakfire_archive* archive,
- int (*callback)(struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data),
- void* data, off_t* offset) {
+ int (*callback)(struct pakfire_archive* archive, struct archive* a,
+ struct archive_entry* e, int flags, void* data),
+ int flags, void* data, off_t* offset) {
struct archive* a;
// Open the archive file
return r;
// Walk through the archive
- r = pakfire_archive_walk_entries(archive, a, callback, data, offset);
+ r = pakfire_archive_walk_entries(archive, a, callback, flags, data, offset);
// Close the archive
close_archive(archive, a);
This function finds the end of the archive so that we can append more files
*/
static off_t pakfire_archive_find_end(struct pakfire_archive* archive, off_t* offset) {
- return pakfire_archive_walk(archive, NULL, NULL, offset);
+ return pakfire_archive_walk(archive, NULL, 0, NULL, offset);
}
static la_ssize_t pakfire_archive_read_callback(struct archive* a,
}
static int pakfire_archive_read_metadata_entry(struct pakfire_archive* archive, struct archive* a,
- struct archive_entry* e, void* data) {
+ struct archive_entry* e, int flags, void* data) {
int ret;
const char* entry_name = archive_entry_pathname(e);
}
static int pakfire_archive_read_metadata(struct pakfire_archive* archive, struct archive* a) {
- return pakfire_archive_walk(archive, pakfire_archive_read_metadata_entry, NULL, NULL);
+ return pakfire_archive_walk(archive, pakfire_archive_read_metadata_entry, 0, NULL, NULL);
}
/*
}
static int pakfire_archive_extract_entry(struct pakfire_archive* archive,
- struct archive* a, struct archive_entry* entry, void* data) {
+ struct archive* a, struct archive_entry* entry, int flags, void* data) {
struct pakfire_archive_extractor* extractor = (struct pakfire_archive_extractor*)data;
char buffer[PATH_MAX];
// Extract everything
r = pakfire_archive_walk_entries(archive, payload,
- pakfire_archive_extract_entry, &extractor, NULL);
+ pakfire_archive_extract_entry, 0, &extractor, NULL);
ERROR:
// Finish progressbar
This function is called to examine whether we have a signature and if so verify it
*/
static int pakfire_archive_verify_signature(struct pakfire_archive* archive, struct archive* a,
- struct archive_entry* e, void* data) {
+ struct archive_entry* e, int flags, void* data) {
const char* entry_name = archive_entry_pathname(e);
// This is not a signature
archive->verify = PAKFIRE_ARCHIVE_VERIFY_NOT_SIGNED;
// Verify all signatures
- r = pakfire_archive_walk(archive, pakfire_archive_verify_signature, &checksums, NULL);
+ r = pakfire_archive_walk(archive, pakfire_archive_verify_signature, 0, &checksums, NULL);
ERROR:
gpgme_data_release(checksums);