summaryrefslogtreecommitdiff
path: root/src/shared/strv.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-04-11 12:56:51 +0200
committerLennart Poettering <lennart@poettering.net>2012-04-11 13:20:34 +0200
commit71ecc858fa91a686a050bee51804d43865ce1acc (patch)
tree2bb4c6e504a1d3f652e00ce84bd9e1a3c21fd588 /src/shared/strv.c
parent6996295f85a0402b8a72d76c1eab02fb8152f81d (diff)
main: drop container/initrd env vars from inherited set
Leave the env vars used in the container/initrd logic set for PID1, but don't inherit them to any children.
Diffstat (limited to 'src/shared/strv.c')
-rw-r--r--src/shared/strv.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/shared/strv.c b/src/shared/strv.c
index bb309d9f92..f61680d476 100644
--- a/src/shared/strv.c
+++ b/src/shared/strv.c
@@ -386,6 +386,31 @@ char **strv_remove(char **l, const char *s) {
return l;
}
+char **strv_remove_prefix(char **l, const char *s) {
+ char **f, **t;
+
+ if (!l)
+ return NULL;
+
+ assert(s);
+
+ /* Drops every occurrence of a string prefixed with s in the
+ * string list, edits in-place. */
+
+ for (f = t = l; *f; f++) {
+
+ if (startswith(*f, s)) {
+ free(*f);
+ continue;
+ }
+
+ *(t++) = *f;
+ }
+
+ *t = NULL;
+ return l;
+}
+
static int env_append(char **r, char ***k, char **a) {
assert(r);
assert(k);