summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-12-20 10:08:23 -0500
committerAnthony G. Basile <blueness@gentoo.org>2014-12-20 10:08:23 -0500
commit0ec88a3573a882f7c8cd23b011e42ffa7e01397d (patch)
treeabb930357eb2256d9f32c7b27c84674012f26d34
parent8170dcd3695d60b456e28125f53874ef686128ca (diff)
shared: strv - add strv_clear()
This frees the elements of the strv without freeing the strv itself. Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-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 85ae556c16..5cfab8f23e 100644
--- a/src/shared/strv.c
+++ b/src/shared/strv.c
@@ -26,7 +26,7 @@
#include "util.h"
#include "strv.h"
-void strv_free(char **l) {
+void strv_clear(char **l) {
char **k;
if (!l)
@@ -35,6 +35,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 22c8132c57..94bdbe62aa 100644
--- a/src/shared/strv.h
+++ b/src/shared/strv.h
@@ -28,6 +28,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_;