forked from pool/systemd
74 lines
2.8 KiB
Diff
74 lines
2.8 KiB
Diff
|
From 342aea195051633c69ba7b8c02c82a0e5f8cbde4 Mon Sep 17 00:00:00 2001
|
||
|
From: Michael Marineau <michael.marineau@coreos.com>
|
||
|
Date: Fri, 16 May 2014 16:58:31 -0700
|
||
|
Subject: [PATCH] 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.
|
||
|
---
|
||
|
src/shared/conf-parser.c | 9 +++++++--
|
||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git src/shared/conf-parser.c src/shared/conf-parser.c
|
||
|
index d27b1b7..062b15b 100644
|
||
|
--- src/shared/conf-parser.c
|
||
|
+++ 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.7.9.2
|
||
|
|