diff options
author | Tom Gundersen <teg@jklm.no> | 2014-12-17 01:08:56 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-12-17 01:09:16 +0100 |
commit | dd9c7723fafc8b326188efa86efe00bcbe5abcfd (patch) | |
tree | 5009480faf68308a8fb769115158e1e11f0b2e1f /src | |
parent | 3542eac7f98e74ca106ac6df81b3b3cb158b35be (diff) | |
download | systemd-dd9c7723fafc8b326188efa86efe00bcbe5abcfd.tar.gz systemd-dd9c7723fafc8b326188efa86efe00bcbe5abcfd.tar.bz2 systemd-dd9c7723fafc8b326188efa86efe00bcbe5abcfd.zip |
shared: strv - add strv_clear()
This frees the elements of the strv without freeing the strv itself.
Diffstat (limited to 'src')
-rw-r--r-- | src/shared/strv.c | 7 | ||||
-rw-r--r-- | src/shared/strv.h | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/shared/strv.c b/src/shared/strv.c index fdb658c0a3..f86dddaf81 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -69,7 +69,7 @@ char *strv_find_startswith(char **l, const char *name) { return NULL; } -void strv_free(char **l) { +void strv_clear(char **l) { char **k; if (!l) @@ -78,6 +78,11 @@ void strv_free(char **l) { for (k = l; *k; k++) free(*k); + *l = NULL; +} + +void strv_free(char **l) { + strv_clear(l); free(l); } diff --git a/src/shared/strv.h b/src/shared/strv.h index 2c0280b713..9e5b1bb8b0 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -34,6 +34,8 @@ void strv_free(char **l); DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free); #define _cleanup_strv_free_ _cleanup_(strv_freep) +void strv_clear(char **l); + char **strv_copy(char * const *l); unsigned strv_length(char * const *l) _pure_; |