]> git.ipfire.org Git - pakfire.git/commitdiff
package: Refacor pakfire_package_set_filelist
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 5 Sep 2022 15:17:20 +0000 (15:17 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 5 Sep 2022 15:17:20 +0000 (15:17 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/package.c

index 530ce6d3f01f0403b1e5aeb7697c5530c6a29479..d85570a1e78e08a516f92f98c50726b55052910e 100644 (file)
@@ -1370,25 +1370,19 @@ static int pakfire_package_append_file(struct pakfire_package* pkg, const char*
        return 0;
 }
 
-PAKFIRE_EXPORT int pakfire_package_set_filelist(struct pakfire_package* pkg, struct pakfire_filelist* filelist) {
-       int r;
-
-       for (unsigned int i = 0; i < pakfire_filelist_size(filelist); i++) {
-               struct pakfire_file* file = pakfire_filelist_get(filelist, i);
+static int __pakfire_package_set_filelist(struct pakfire* pakfire,
+               struct pakfire_file* file, void* data) {
+       struct pakfire_package* pkg = (struct pakfire_package*)data;
 
-               const char* path = pakfire_file_get_path(file);
-               if (path) {
-                       r = pakfire_package_append_file(pkg, path);
-                       if (r) {
-                               pakfire_file_unref(file);
-                               return r;
-                       }
-               }
+       // Fetch the path
+       const char* path = pakfire_file_get_path(file);
 
-               pakfire_file_unref(file);
-       }
+       return pakfire_package_append_file(pkg, path);
+}
 
-       return 0;
+PAKFIRE_EXPORT int pakfire_package_set_filelist(
+               struct pakfire_package* pkg, struct pakfire_filelist* filelist) {
+       return pakfire_filelist_walk(filelist, __pakfire_package_set_filelist, pkg);
 }
 
 int pakfire_package_set_filelist_from_string(struct pakfire_package* pkg, const char* files) {