1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-27 10:25:37 +03:00

conf-parser: silently ignore sections starting with "X-"

This allows external tools to keep additional unit information in a
separate section without scaring users with a big warning.
This commit is contained in:
Michael Marineau 2014-05-16 16:58:31 -07:00 committed by Zbigniew Jędrzejewski-Szmek
parent 24fe021ba5
commit 342aea1950

View File

@ -204,6 +204,7 @@ static int parse_line(const char* unit,
bool allow_include,
char **section,
unsigned *section_line,
bool *section_ignored,
char *l,
void *userdata) {
@ -266,7 +267,7 @@ static int parse_line(const char* unit,
if (sections && !nulstr_contains(sections, n)) {
if (!relaxed)
if (!relaxed && !startswith(n, "X-"))
log_syntax(unit, LOG_WARNING, filename, line, EINVAL,
"Unknown section '%s'. Ignoring.", n);
@ -274,10 +275,12 @@ static int parse_line(const char* unit,
free(*section);
*section = NULL;
*section_line = 0;
*section_ignored = true;
} else {
free(*section);
*section = n;
*section_line = line;
*section_ignored = false;
}
return 0;
@ -285,7 +288,7 @@ static int parse_line(const char* unit,
if (sections && !*section) {
if (!relaxed)
if (!relaxed && !*section_ignored)
log_syntax(unit, LOG_WARNING, filename, line, EINVAL,
"Assignment outside of section. Ignoring.");
@ -328,6 +331,7 @@ int config_parse(const char *unit,
_cleanup_free_ char *section = NULL, *continuation = NULL;
_cleanup_fclose_ FILE *ours = NULL;
unsigned line = 0, section_line = 0;
bool section_ignored = false;
int r;
assert(filename);
@ -399,6 +403,7 @@ int config_parse(const char *unit,
allow_include,
&section,
&section_line,
&section_ignored,
p,
userdata);
free(c);