chiark / gitweb /
service: rework logic when we consider a service running
[elogind.git] / src / strv.c
index 85599fe92c3e0b1e368402fca2d7f1cffc400f5a..01464e1e330816bfd0f4fae3af4ae3085b5ac0b6 100644 (file)
@@ -511,3 +511,31 @@ char **strv_env_delete(char **x, unsigned n_lists, ...) {
 
         return r;
 }
+
+char **strv_env_set(char **x, const char *p) {
+
+        char **k, **r;
+
+        if (!(r = new(char*, strv_length(x)+2)))
+                return NULL;
+
+        k = r;
+        if (env_append(r, &k, x) < 0)
+                goto fail;
+
+        if (!(*(k++) = strdup(p)))
+                goto fail;
+
+        *k = NULL;
+
+        return r;
+
+fail:
+        for (k--; k >= r; k--)
+                free(*k);
+
+        free(r);
+
+        return NULL;
+
+}