From: Michael Tremer Date: Tue, 23 Aug 2022 16:32:13 +0000 (+0000) Subject: packager: Add function to add multiple files at once X-Git-Tag: 0.9.28~391 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=814b7fee96adaa070c2210d2d67c98f81d976ef6;p=pakfire.git packager: Add function to add multiple files at once Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index 6b684a427..fc2f42a71 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -350,25 +350,9 @@ static int pakfire_build_package_add_files(struct pakfire_build* build, } // Add all files to the package - for (unsigned int i = 0; i < length; i++) { - struct pakfire_file* file = pakfire_filelist_get(filelist, i); - - // Add the file to the package - r = pakfire_packager_add_file(packager, file); - if (r) { - pakfire_file_unref(file); - goto ERROR; - } - - // Remove the file after it was packaged - r = pakfire_file_cleanup(file); - if (r) { - pakfire_file_unref(file); - goto ERROR; - } - - pakfire_file_unref(file); - } + r = pakfire_packager_add_files(packager, filelist, 1); + if (r) + goto ERROR; ERROR: if (filelist) diff --git a/src/libpakfire/include/pakfire/packager.h b/src/libpakfire/include/pakfire/packager.h index dad1b90f2..f54dc217d 100644 --- a/src/libpakfire/include/pakfire/packager.h +++ b/src/libpakfire/include/pakfire/packager.h @@ -24,6 +24,7 @@ #ifdef PAKFIRE_PRIVATE #include +#include #include #include @@ -43,6 +44,8 @@ int pakfire_packager_finish_to_directory(struct pakfire_packager* packager, int pakfire_packager_add_file( struct pakfire_packager* packager, struct pakfire_file* file); +int pakfire_packager_add_files(struct pakfire_packager* packager, + struct pakfire_filelist* filelist, int cleanup); int pakfire_packager_add(struct pakfire_packager* packager, const char* sourcepath, const char* path); diff --git a/src/libpakfire/packager.c b/src/libpakfire/packager.c index d8148def7..aa090d6fa 100644 --- a/src/libpakfire/packager.c +++ b/src/libpakfire/packager.c @@ -798,6 +798,41 @@ ERROR: return r; } +int pakfire_packager_add_files(struct pakfire_packager* packager, + struct pakfire_filelist* filelist, int cleanup) { + struct pakfire_file* file = NULL; + int r; + + // Fetch length of the filelist + const size_t length = pakfire_filelist_size(filelist); + + // Add all files to the package + for (unsigned int i = 0; i < length; i++) { + file = pakfire_filelist_get(filelist, i); + + // Add the file to the package + r = pakfire_packager_add_file(packager, file); + if (r) { + pakfire_file_unref(file); + goto ERROR; + } + + // Remove the file after it was packaged + if (cleanup) { + r = pakfire_file_cleanup(file); + if (r) { + pakfire_file_unref(file); + goto ERROR; + } + } + + pakfire_file_unref(file); + } + +ERROR: + return r; +} + int pakfire_packager_add_scriptlet(struct pakfire_packager* packager, struct pakfire_scriptlet* scriptlet) { if (!scriptlet) {