From 56e6004336aeb3a7e92e8418430217c42feb2515 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Wed, 4 Apr 2018 14:03:23 +0200 Subject: Simplifiy service file syntax Signed-off-by: David Oberhollenzer --- initd/runlst.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'initd') diff --git a/initd/runlst.c b/initd/runlst.c index 908ec15..ee8c5c5 100644 --- a/initd/runlst.c +++ b/initd/runlst.c @@ -37,15 +37,28 @@ static NORETURN void split_and_exec(char *cmd) while (*cmd != '\0') { argv[i++] = cmd; /* FIXME: buffer overflow!! */ - while (*cmd != '\0' && !isspace(*cmd)) - ++cmd; + if (*cmd == '"') { + while (*cmd != '\0' && *cmd != '"') { + if (cmd[0] == '\\' && cmd[1] != '\0') + ++cmd; + + ++cmd; + } - if (isspace(*cmd)) { - *(cmd++) = '\0'; + if (*cmd == '"') + *(cmd++) = '\0'; - while (isspace(*cmd)) + unescape(argv[i - 1]); + } else { + while (*cmd != '\0' && *cmd != ' ') ++cmd; + + if (*cmd == ' ') + *(cmd++) = '\0'; } + + while (*cmd == ' ') + ++cmd; } argv[i] = NULL; -- cgit v1.2.3