mirror of
https://github.com/systemd/systemd
synced 2024-10-15 04:24:19 +00:00
Merge pull request #12890 from yuwata/fix-conf-parser-12883
conf-parse: fix continuation handling
This commit is contained in:
commit
f9d269e14d
|
@ -322,7 +322,8 @@ int config_parse(const char *unit,
|
|||
return r;
|
||||
}
|
||||
|
||||
if (strchr(COMMENTS, *skip_leading_chars(buf, WHITESPACE)))
|
||||
l = skip_leading_chars(buf, WHITESPACE);
|
||||
if (*l != '\0' && strchr(COMMENTS, *l))
|
||||
continue;
|
||||
|
||||
l = buf;
|
||||
|
|
|
@ -230,6 +230,13 @@ static const char* const config_file[] = {
|
|||
"setting1=2\n"
|
||||
"setting1=1\n", /* repeated settings */
|
||||
|
||||
"[Section]\n"
|
||||
"[Section]\n"
|
||||
"setting1=1\n"
|
||||
"setting1=2\\\n"
|
||||
" \n" /* empty line breaks continuation */
|
||||
"setting1=1\n", /* repeated settings */
|
||||
|
||||
"[Section]\n"
|
||||
"setting1=1\\\n" /* normal continuation */
|
||||
"2\\\n"
|
||||
|
@ -330,32 +337,32 @@ static void test_config_parse(unsigned i, const char *s) {
|
|||
CONFIG_PARSE_WARN, NULL);
|
||||
|
||||
switch (i) {
|
||||
case 0 ... 3:
|
||||
case 0 ... 4:
|
||||
assert_se(r == 0);
|
||||
assert_se(streq(setting1, "1"));
|
||||
break;
|
||||
|
||||
case 4 ... 9:
|
||||
case 5 ... 10:
|
||||
assert_se(r == 0);
|
||||
assert_se(streq(setting1, "1 2 3"));
|
||||
break;
|
||||
|
||||
case 10:
|
||||
case 11:
|
||||
assert_se(r == 0);
|
||||
assert_se(streq(setting1, "1\\\\ \\\\2"));
|
||||
break;
|
||||
|
||||
case 11:
|
||||
case 12:
|
||||
assert_se(r == 0);
|
||||
assert_se(streq(setting1, x1000("ABCD")));
|
||||
break;
|
||||
|
||||
case 12 ... 13:
|
||||
case 13 ... 14:
|
||||
assert_se(r == 0);
|
||||
assert_se(streq(setting1, x1000("ABCD") " foobar"));
|
||||
break;
|
||||
|
||||
case 14 ... 15:
|
||||
case 15 ... 16:
|
||||
assert_se(r == -ENOBUFS);
|
||||
assert_se(setting1 == NULL);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue