diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 8fe177990a..b80c147807 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; } @@ -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; 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;