[systemd-commits] src/shared

Zbigniew Jędrzejewski-Szmek zbyszek at kemper.freedesktop.org
Fri May 16 21:29:42 PDT 2014


 src/shared/conf-parser.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit 342aea195051633c69ba7b8c02c82a0e5f8cbde4
Author: Michael Marineau <michael.marineau at coreos.com>
Date:   Fri May 16 16:58:31 2014 -0700

    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.

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,
                                &section,
                                &section_line,
+                               &section_ignored,
                                p,
                                userdata);
                 free(c);



More information about the systemd-commits mailing list