From 71b21730d49ca53f0ccf1afc039c5962bbb85662 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 8 Jan 2019 12:50:58 +0900 Subject: [PATCH 1/3] conf-parser: mention that unknown lvalue is ignored --- src/shared/conf-parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 8fe177990a..e41027a0bc 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -137,7 +137,7 @@ static int next_assignment( /* Warn about unknown non-extension fields. */ if (!(flags & CONFIG_PARSE_RELAXED) && !startswith(lvalue, "X-")) - log_syntax(unit, LOG_WARNING, filename, line, 0, "Unknown lvalue '%s' in section '%s'", lvalue, section); + log_syntax(unit, LOG_WARNING, filename, line, 0, "Unknown lvalue '%s' in section '%s', ignoring", lvalue, section); return 0; } From b41dd0d2dbe9a286e301e7ab09df6be98ab097a8 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 8 Jan 2019 13:04:57 +0900 Subject: [PATCH 2/3] conf-parser: accept whitespaces before comments Closes #11343. --- src/shared/conf-parser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index e41027a0bc..b80c147807 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -321,7 +321,7 @@ int config_parse(const char *unit, return r; } - if (strchr(COMMENTS, *buf)) + if (strchr(COMMENTS, *skip_leading_chars(buf, WHITESPACE))) continue; l = buf; From ff650ffe348b3a22f2fe4ef6b579526d9e55a6ee Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 8 Jan 2019 14:12:22 +0900 Subject: [PATCH 3/3] test: add testcases for the lines prefixed with whitespaces --- src/test/test-conf-parser.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/test/test-conf-parser.c b/src/test/test-conf-parser.c index 2921338f62..1738938fce 100644 --- a/src/test/test-conf-parser.c +++ b/src/test/test-conf-parser.c @@ -247,6 +247,18 @@ static const char* const config_file[] = { "2\\\n" "3\n", + "[Section]\n" + " #hogehoge\\\n" /* whitespaces before comments */ + " setting1=1\\\n" /* whitespaces before key */ + "2\\\n" + "3\n", + + "[Section]\n" + " setting1=1\\\n" /* whitespaces before key */ + " #hogehoge\\\n" /* commented out line prefixed with whitespaces in continuation */ + "2\\\n" + "3\n", + "[Section]\n" "setting1=1\\\n" /* continuation with extra trailing backslash at the end */ "2\\\n" @@ -323,27 +335,27 @@ static void test_config_parse(unsigned i, const char *s) { assert_se(streq(setting1, "1")); break; - case 4 ... 7: + case 4 ... 9: assert_se(r == 0); assert_se(streq(setting1, "1 2 3")); break; - case 8: + case 10: assert_se(r == 0); assert_se(streq(setting1, "1\\\\ \\\\2")); break; - case 9: + case 11: assert_se(r == 0); assert_se(streq(setting1, x1000("ABCD"))); break; - case 10 ... 11: + case 12 ... 13: assert_se(r == 0); assert_se(streq(setting1, x1000("ABCD") " foobar")); break; - case 12 ... 13: + case 14 ... 15: assert_se(r == -ENOBUFS); assert_se(setting1 == NULL); break;