]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
strv: add strv_free_many() to be used with CLEANUP_ARRAY()
authorLuca Boccassi <bluca@debian.org>
Fri, 3 Nov 2023 16:59:32 +0000 (16:59 +0000)
committerLuca Boccassi <bluca@debian.org>
Fri, 3 Nov 2023 16:59:58 +0000 (16:59 +0000)
src/basic/strv.c
src/basic/strv.h

index 37c8f553eb3f53cbc56eb840936f7505816eed59..c2109d35bc25ed42e7898965512cc2a3bd87cab2 100644 (file)
@@ -88,6 +88,15 @@ char** strv_free_erase(char **l) {
         return mfree(l);
 }
 
+void strv_free_many(char ***strvs, size_t n) {
+        assert(strvs || n == 0);
+
+        FOREACH_ARRAY (i, strvs, n)
+                strv_free(*i);
+
+        free(strvs);
+}
+
 char** strv_copy_n(char * const *l, size_t m) {
         _cleanup_strv_free_ char **result = NULL;
         char **k;
index 544d46a3f8d6f5b19623b8b95b7848aecfc9becf..fec26167339dbd37e4c793331b54d9e1c2e46203 100644 (file)
@@ -32,6 +32,8 @@ char** strv_free_erase(char **l);
 DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free_erase);
 #define _cleanup_strv_free_erase_ _cleanup_(strv_free_erasep)
 
+void strv_free_many(char ***strvs, size_t n);
+
 char** strv_copy_n(char * const *l, size_t n);
 static inline char** strv_copy(char * const *l) {
         return strv_copy_n(l, SIZE_MAX);