diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-07-21 02:57:35 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-07-21 02:57:35 +0200 |
commit | c24eb49e6aecd6de2ad450083e826d4c9d9c75b6 (patch) | |
tree | 6833f35a658d6427eb981b320df3c6913e8fc455 /src/test-env-replace.c | |
parent | 9d25f5ed7b80df732cf7842985aa9b243bcd2335 (diff) |
exec: extend variable substitution to support splitting variable values into seperate arguments
Diffstat (limited to 'src/test-env-replace.c')
-rw-r--r-- | src/test-env-replace.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/test-env-replace.c b/src/test-env-replace.c new file mode 100644 index 0000000000..df101fd135 --- /dev/null +++ b/src/test-env-replace.c @@ -0,0 +1,59 @@ +/*-*- Mode: C; c-basic-offset: 8 -*-*/ + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <unistd.h> +#include <string.h> + +#include "util.h" +#include "log.h" +#include "strv.h" + +int main(int argc, char *argv[]) { + + const char *env[] = { + "FOO=BAR BAR", + "BAR=waldo", + NULL + }; + + const char *line[] = { + "FOO$FOO", + "FOO$FOOFOO", + "FOO${FOO}$FOO", + "FOO${FOO}", + "${FOO}", + "$FOO", + "$FOO$FOO", + "${FOO}${BAR}", + "${FOO", + NULL + }; + + char **i, **r; + + r = replace_env_argv((char**) line, (char**) env); + + STRV_FOREACH(i, r) + printf("%s\n", *i); + + strv_free(r); + +} |