chiark / gitweb /
strv: add strv_print
[elogind.git] / src / shared / strv.c
index 6b76d0eaef57616b11f3aa5f32f29de714236605..fc6104ffeaaba438065c3a9e594f923a429e21b1 100644 (file)
@@ -370,6 +370,32 @@ fail:
         return NULL;
 }
 
+int strv_extend(char ***l, const char *value) {
+        char **c;
+        char *v;
+        unsigned n;
+
+        if (!value)
+                return 0;
+
+        v = strdup(value);
+        if (!v)
+                return -ENOMEM;
+
+        n = strv_length(*l);
+        c = realloc(*l, sizeof(char*) * (n + 2));
+        if (!c) {
+                free(v);
+                return -ENOMEM;
+        }
+
+        c[n] = v;
+        c[n+1] = NULL;
+
+        *l = c;
+        return 0;
+}
+
 char **strv_uniq(char **l) {
         char **i;
 
@@ -748,3 +774,13 @@ char **strv_sort(char **l) {
         qsort(l, strv_length(l), sizeof(char*), str_compare);
         return l;
 }
+
+void strv_print(char **l) {
+        char **s;
+
+        if (!l)
+                return;
+
+        STRV_FOREACH(s, l)
+                puts(*s);
+}