]> git.ipfire.org Git - pakfire.git/commitdiff
strings: Add function to free string arrays
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 30 Aug 2023 16:38:38 +0000 (16:38 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 30 Aug 2023 16:38:38 +0000 (16:38 +0000)
This should help us to keep code tidier and shorter.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/string.h
src/libpakfire/package.c

index 01a71c6f4fbff865a3527024e44c57edcd006851..bcdbd0773bf59713fbce39b9e56260bdb13b9189 100644 (file)
@@ -51,6 +51,18 @@ char* pakfire_string_replace(const char* s, const char* pattern, const char* rep
 char** pakfire_string_split(const char* s, char delim);
 char* pakfire_string_join(char** list, const char* delim);
 
+
+/*
+       Cleanup Stuff
+*/
+
+void inline pakfire_strings_free(char** array) {
+       for (char** s = array; *s; s++)
+               free(*s);
+
+       free(array);
+}
+
 #define TIME_STRING_MAX 32
 
 #define pakfire_format_size(dst, value) \
index 9f1cf2cd735ef1bab8cd9fb0173213f8ed8a7811..56823cfc7a4e5f4496b3bb60f41dc19176c28ffb 100644 (file)
@@ -1302,10 +1302,7 @@ PAKFIRE_EXPORT char** pakfire_package_get_deps(struct pakfire_package* pkg,
 
 ERROR:
        if (ret) {
-               for (char** e = ret; *e; e++)
-                       free(*e);
-               free(ret);
-
+               pakfire_strings_free(ret);
                ret = NULL;
        }
 
@@ -1603,12 +1600,10 @@ PAKFIRE_EXPORT char* pakfire_package_dump(struct pakfire_package* pkg, int flags
                // Build Arches
                char** build_arches = pakfire_package_get_strings(pkg, PAKFIRE_PKG_BUILD_ARCHES);
                if (build_arches) {
-                       for (char** build_arch = build_arches; *build_arch; build_arch++) {
+                       for (char** build_arch = build_arches; *build_arch; build_arch++)
                                pakfire_package_dump_add_line(&string, _("Build Arch"), *build_arch);
-                               free(*build_arch);
-                       }
 
-                       free(build_arches);
+                       pakfire_strings_free(build_arches);
                }
 
                enum pakfire_digest_types digest_type = PAKFIRE_DIGEST_UNDEFINED;
@@ -1962,11 +1957,8 @@ static int _pakfire_package_add_json_dependencies(
                goto ERROR;
 
 ERROR:
-       if (dependencies) {
-               for (char** dep = dependencies; *dep; dep++)
-                       free(*dep);
-               free(dependencies);
-       }
+       if (dependencies)
+               pakfire_strings_free(dependencies);
 
        return r;
 }
@@ -2239,9 +2231,7 @@ static int pakfire_package_add_build_metadata(struct pakfire_package* pkg,
                r = pakfire_json_add_string_array(pkg->pakfire, object, "arches", build_arches);
 
                // Cleanup
-               for (char** build_arch = build_arches; *build_arch; build_arch++)
-                       free(*build_arch);
-               free(build_arches);
+               pakfire_strings_free(build_arches);
 
                if (r)
                        goto ERROR;