chiark / gitweb /
shared: introduce _cleanup_set_free_free_
[elogind.git] / src / shared / strv.c
index 6b76d0eaef57616b11f3aa5f32f29de714236605..2d556f4a076a664a71ffc70f0bd77d675e531bde 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;