From: Michael Tremer Date: Mon, 21 Oct 2024 17:49:23 +0000 (+0000) Subject: archive: Simplify the walk/filter callbacks X-Git-Tag: 0.9.30~973 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a7bfe0334977c84705f97c093b8a11923cffe2dd;p=pakfire.git archive: Simplify the walk/filter callbacks Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index d68100c28..5539d5109 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -282,7 +282,7 @@ static int pakfire_archive_walk(struct pakfire_archive* archive, struct archive* // Call the filter callback before we call the actual callback if (filter_callback) { - r = filter_callback(archive->ctx, archive, a, entry, p); + r = filter_callback(archive, entry, p); // Handle the return code switch (r) { @@ -317,7 +317,7 @@ static int pakfire_archive_walk(struct pakfire_archive* archive, struct archive* // Run callback if (walk_callback) { - r = walk_callback(archive->ctx, archive, a, entry, p); + r = walk_callback(archive, a, entry, p); // Handle the return code switch (r) { @@ -538,20 +538,20 @@ ERROR: return r; } -static int __pakfire_archive_read_metadata(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* entry, void* p) { +static int __pakfire_archive_read_metadata(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* entry, void* p) { char* data = NULL; size_t length = 0; int r; const char* path = archive_entry_pathname(entry); - CTX_DEBUG(ctx, "Reading metadata file: %s\n", path); + CTX_DEBUG(archive->ctx, "Reading metadata file: %s\n", path); // Load the file into memory r = pakfire_archive_copy_data_to_buffer(archive, a, entry, &data, &length); if (r) { - CTX_ERROR(ctx, "Could not read data from archive: %s\n", archive_error_string(a)); + CTX_ERROR(archive->ctx, "Could not read data from archive: %s\n", archive_error_string(a)); goto ERROR; } @@ -584,8 +584,8 @@ ERROR: return r; } -static int __pakfire_archive_filter_metadata(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* entry, void* p) { +static int __pakfire_archive_filter_metadata(struct pakfire_archive* archive, + struct archive_entry* entry, void* p) { const char* path = archive_entry_pathname(entry); // Format >= 6 @@ -764,8 +764,8 @@ static int64_t pakfire_archive_metadata_get_int64( return json_object_get_int64(object); } -static int pakfire_archive_filter_payload(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* entry, void* p) { +static int pakfire_archive_filter_payload(struct pakfire_archive* archive, + struct archive_entry* entry, void* p) { const char* path = archive_entry_pathname(entry); if (!path) return PAKFIRE_WALK_ERROR; @@ -837,8 +837,8 @@ static cookie_io_functions_t pakfire_archive_read_functions = { }; // Tries to find a matching file in the archive -static int pakfire_archive_read_filter(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data) { +static int pakfire_archive_read_filter(struct pakfire_archive* archive, + struct archive_entry* e, void* data) { struct pakfire_archive_read_cookie* cookie = data; const char* symlink = NULL; int r; @@ -871,7 +871,7 @@ static int pakfire_archive_read_filter(struct pakfire_ctx* ctx, // Increment counter if (++cookie->followed_symlinks >= MAX_FOLLOW_SYMLINKS) { - CTX_ERROR(ctx, "Reached maximum number of symlinks to follow\n"); + CTX_ERROR(archive->ctx, "Reached maximum number of symlinks to follow\n"); return PAKFIRE_WALK_ERROR; } @@ -886,14 +886,14 @@ static int pakfire_archive_read_filter(struct pakfire_ctx* ctx, } // Reads a matching file into memory -static int __pakfire_archive_read(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data) { +static int __pakfire_archive_read(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* e, void* data) { struct pakfire_archive_read_cookie* cookie = data; // Create a file descriptor cookie->f = fopencookie(cookie, "r", pakfire_archive_read_functions); if (!cookie->f) { - CTX_ERROR(ctx, "Could not open /%s: %m\n", cookie->path); + CTX_ERROR(archive->ctx, "Could not open /%s: %m\n", cookie->path); return PAKFIRE_WALK_ERROR; } @@ -1091,8 +1091,8 @@ static void pakfire_extract_progress(void* data) { pakfire_progress_update(state->archive->progress, position); } -static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* entry, void* data) { +static int pakfire_archive_extract_one(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* entry, void* data) { struct pakfire_file* file = NULL; struct vfs_cap_data cap_data = {}; char buffer[PATH_MAX]; @@ -1136,7 +1136,7 @@ static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, // Compose file path r = pakfire_path_append(buffer, state->prefix, path); if (r < 0) { - CTX_ERROR(ctx, "Could not compose file path: %m\n"); + CTX_ERROR(archive->ctx, "Could not compose file path: %m\n"); goto ERROR; } @@ -1148,7 +1148,7 @@ static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, if (link) { r = pakfire_path_append(buffer, state->prefix, link); if (r < 0) { - CTX_ERROR(ctx, "Could not compose hardlink path: %m\n"); + CTX_ERROR(archive->ctx, "Could not compose hardlink path: %m\n"); goto ERROR; } @@ -1162,12 +1162,12 @@ static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, path = archive_entry_pathname(entry); if (pakfire_path_exists(path)) { - CTX_DEBUG(ctx, "The configuration file %s exists\n", + CTX_DEBUG(archive->ctx, "The configuration file %s exists\n", pakfire_file_get_path(file)); r = pakfire_string_format(buffer, "%s.paknew", path); if (r < 0) { - CTX_ERROR(ctx, "Could not compose path for configuration file: %m\n"); + CTX_ERROR(archive->ctx, "Could not compose path for configuration file: %m\n"); goto ERROR; } @@ -1181,7 +1181,7 @@ static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, // Fetch path again since we changed it path = archive_entry_pathname(entry); - CTX_DEBUG(ctx, "Extracting %s\n", path); + CTX_DEBUG(archive->ctx, "Extracting %s\n", path); // Remove any extended attributes which we never write to disk archive_entry_xattr_clear(entry); @@ -1205,14 +1205,14 @@ static int pakfire_archive_extract_one(struct pakfire_ctx* ctx, break; case ARCHIVE_WARN: - CTX_ERROR(ctx, "%s\n", archive_error_string(state->writer)); + CTX_ERROR(archive->ctx, "%s\n", archive_error_string(state->writer)); // Pretend everything has been okay r = 0; break; case ARCHIVE_FATAL: - CTX_ERROR(ctx, "%s\n", archive_error_string(state->writer)); + CTX_ERROR(archive->ctx, "%s\n", archive_error_string(state->writer)); r = 1; break; } @@ -1758,8 +1758,8 @@ struct pakfire_scriptlet* pakfire_archive_get_scriptlet( /* systemd sysusers */ -static int pakfire_archive_filter_systemd_sysusers(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data) { +static int pakfire_archive_filter_systemd_sysusers(struct pakfire_archive* archive, + struct archive_entry* e, void* data) { const char* path = archive_entry_pathname(e); if (!pakfire_path_match("usr/lib/sysusers.d/*.conf", path)) @@ -1781,8 +1781,8 @@ static ssize_t pakfire_archive_stream_payload( return bytes_read; } -static int pakfire_archive_handle_systemd_sysusers(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* data) { +static int pakfire_archive_handle_systemd_sysusers(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* e, void* data) { struct pakfire_jail* jail = NULL; char replace[PATH_MAX]; int r; diff --git a/src/libpakfire/include/pakfire/archive.h b/src/libpakfire/include/pakfire/archive.h index 4332a63dd..80f9d97bc 100644 --- a/src/libpakfire/include/pakfire/archive.h +++ b/src/libpakfire/include/pakfire/archive.h @@ -67,10 +67,10 @@ int pakfire_archive_lint(struct pakfire_archive* archive, // Walk -typedef int (*pakfire_archive_walk_callback)(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* p); -typedef int (*pakfire_archive_walk_filter_callback)(struct pakfire_ctx* ctx, - struct pakfire_archive* archive, struct archive* a, struct archive_entry* e, void* p); +typedef int (*pakfire_archive_walk_callback)(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* e, void* p); +typedef int (*pakfire_archive_walk_filter_callback)(struct pakfire_archive* archive, + struct archive_entry* e, void* p); enum pakfire_archive_walk_codes { PAKFIRE_WALK_OK = 0,