From: Luca Boccassi Date: Fri, 3 Nov 2023 16:59:32 +0000 (+0000) Subject: strv: add strv_free_many() to be used with CLEANUP_ARRAY() X-Git-Tag: v255-rc1~19^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a39cba252ede11013b600dd858c9459bb707d663;p=thirdparty%2Fsystemd.git strv: add strv_free_many() to be used with CLEANUP_ARRAY() --- diff --git a/src/basic/strv.c b/src/basic/strv.c index 37c8f553eb3..c2109d35bc2 100644 --- a/src/basic/strv.c +++ b/src/basic/strv.c @@ -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; diff --git a/src/basic/strv.h b/src/basic/strv.h index 544d46a3f8d..fec26167339 100644 --- a/src/basic/strv.h +++ b/src/basic/strv.h @@ -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);