summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-12-17 01:08:56 +0100
committerTom Gundersen <teg@jklm.no>2014-12-17 01:09:16 +0100
commitdd9c7723fafc8b326188efa86efe00bcbe5abcfd (patch)
tree5009480faf68308a8fb769115158e1e11f0b2e1f /src
parent3542eac7f98e74ca106ac6df81b3b3cb158b35be (diff)
downloadsystemd-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.c7
-rw-r--r--src/shared/strv.h2
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_;