diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-04-11 12:56:51 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-04-11 13:20:34 +0200 |
commit | 71ecc858fa91a686a050bee51804d43865ce1acc (patch) | |
tree | 2bb4c6e504a1d3f652e00ce84bd9e1a3c21fd588 /src/shared/strv.c | |
parent | 6996295f85a0402b8a72d76c1eab02fb8152f81d (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.c | 25 |
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); |