]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
packager: Add function to add multiple files at once
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 23 Aug 2022 16:32:13 +0000 (16:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 23 Aug 2022 16:32:13 +0000 (16:32 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/build.c
src/libpakfire/include/pakfire/packager.h
src/libpakfire/packager.c

index 6b684a4272a2ae3f1deef3cf9d9b581c3b1f9252..fc2f42a714bf71ffbb2548f9cd6d52688c754254 100644 (file)
@@ -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)
index dad1b90f29f40ee0c1295283001e886bb87eba3c..f54dc217d1b020f038cff0373833186eabdfbddb 100644 (file)
@@ -24,6 +24,7 @@
 #ifdef PAKFIRE_PRIVATE
 
 #include <pakfire/file.h>
+#include <pakfire/filelist.h>
 #include <pakfire/package.h>
 #include <pakfire/scriptlet.h>
 
@@ -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);
 
index d8148def7e383b5f0e991800252e12b2cc0ce12a..aa090d6fa2cdba662a3ea4d488ea4c81bbc7cfc3 100644 (file)
@@ -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) {