[systemd-devel] [PATCH] conf-parser: silently ignore sections starting with "X-"
Michael Marineau
michael.marineau at coreos.com
Fri May 16 16:58:31 PDT 2014
This allows external tools to keep additional unit information in a
separate section without scaring users with a big warning.
---
src/shared/conf-parser.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index d27b1b7..062b15b 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -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,
§ion,
§ion_line,
+ §ion_ignored,
p,
userdata);
free(c);
--
1.8.5.5
More information about the systemd-devel
mailing list