core: interpret \; token in ExecStart as escaped ;

Some commands (like 'find') take a semicolon as separate arg. With
current parser implementation there is no way to pass one.

Patch adds token \;
This commit is contained in:
Oleksii Shevchuk 2012-11-03 21:52:02 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 2c5417ade0
commit 7e1a84f552
2 changed files with 12 additions and 0 deletions

View File

@ -483,6 +483,8 @@ int config_parse_exec(
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
if (strncmp(w, ";", MAX(l, 1U)) == 0)
break;
else if (strncmp(w, "\\;", MAX(l, 1U)) == 0)
w ++;
if (honour_argv0 && w == rvalue) {
assert(!path);

View File

@ -138,6 +138,16 @@ static void test_config_parse_exec(void) {
assert_se(c1->command_next == NULL);
/* escaped semicolon */
r = config_parse_exec("fake", 5, "section",
"LValue", 0,
"/usr/bin/find \\;",
&c, NULL);
assert_se(r >= 0);
c1 = c1->command_next;
check_execcommand(c1,
"/usr/bin/find", "/usr/bin/find", ";", false);
exec_command_free_list(c);
}