From: Michael Tremer Date: Fri, 20 Oct 2023 12:25:46 +0000 (+0000) Subject: archive: Move helper function to read data into buffer from util X-Git-Tag: 0.9.30~1414 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3cf923f467e8532a0777f2e9e65671dd157bb1b5;p=pakfire.git archive: Move helper function to read data into buffer from util Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index f6515e378..368320f47 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -341,6 +341,32 @@ static int pakfire_archive_parse_scriptlet(struct pakfire_archive* archive, return 0; } +static int pakfire_archive_copy_data_to_buffer(struct pakfire_archive* archive, + struct archive* a, struct archive_entry* entry, char** data, size_t* data_size) { + *data = NULL; + *data_size = 0; + + size_t required_size = archive_entry_size(entry); + if (!required_size) + return 0; + + // Allocate a block of the required size + *data = calloc(1, required_size + 1); + if (!*data) + return ENOMEM; + + ssize_t bytes_read = archive_read_data(a, *data, required_size); + if (bytes_read < 0) { + CTX_ERROR(archive->ctx, "Could not read from archive: %s\n", archive_error_string(a)); + free(*data); + return 1; + } + + *data_size = bytes_read; + + return 0; +} + static int __pakfire_archive_read_metadata(struct pakfire_ctx* ctx, struct archive* a, struct archive_entry* entry, void* p) { struct pakfire_archive* archive = (struct pakfire_archive*)p; @@ -354,7 +380,7 @@ static int __pakfire_archive_read_metadata(struct pakfire_ctx* ctx, struct archi CTX_DEBUG(ctx, "Reading metadata file: %s\n", path); // Load the file into memory - r = pakfire_archive_copy_data_to_buffer(archive->ctx, a, entry, &data, &length); + r = pakfire_archive_copy_data_to_buffer(archive, a, entry, &data, &length); if (r) { CTX_ERROR(archive->ctx, "Could not read data from archive: %s\n", archive_error_string(a)); diff --git a/src/libpakfire/include/pakfire/util.h b/src/libpakfire/include/pakfire/util.h index 9b05700f7..14b54dfc1 100644 --- a/src/libpakfire/include/pakfire/util.h +++ b/src/libpakfire/include/pakfire/util.h @@ -90,8 +90,6 @@ int pakfire_tty_is_noninteractive(void); int pakfire_archive_copy_data_from_file(struct pakfire* pakfire, struct archive* archive, FILE* f); -int pakfire_archive_copy_data_to_buffer(struct pakfire_ctx* ctx, struct archive* a, - struct archive_entry* entry, char** data, size_t* data_size); // JSON Stuff diff --git a/src/libpakfire/util.c b/src/libpakfire/util.c index ff2440c2e..9aa1993f4 100644 --- a/src/libpakfire/util.c +++ b/src/libpakfire/util.c @@ -677,32 +677,6 @@ int pakfire_archive_copy_data_from_file(struct pakfire* pakfire, return 0; } -int pakfire_archive_copy_data_to_buffer(struct pakfire_ctx* ctx, struct archive* a, - struct archive_entry* entry, char** data, size_t* data_size) { - *data = NULL; - *data_size = 0; - - size_t required_size = archive_entry_size(entry); - if (!required_size) - return 0; - - // Allocate a block of the required size - *data = calloc(1, required_size + 1); - if (!*data) - return ENOMEM; - - ssize_t bytes_read = archive_read_data(a, *data, required_size); - if (bytes_read < 0) { - CTX_ERROR(ctx, "Could not read from archive: %s\n", archive_error_string(a)); - free(*data); - return 1; - } - - *data_size = bytes_read; - - return 0; -} - // JSON Stuff struct json_object* pakfire_json_parse(struct pakfire_ctx* ctx,