X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=conf-parser.c;h=2cf90f2defa1ff8dec0ae4d5c7aad47d433baecd;hb=6dde1f33e1249a8a6b354372dd95065f26b8c712;hp=aebf61aaf5067a77086be7594c0d0b14506b95dc;hpb=63ad1ab4f333351914abf0c3e78d4b3fa2e1cb66;p=elogind.git diff --git a/conf-parser.c b/conf-parser.c index aebf61aaf..2cf90f2de 100644 --- a/conf-parser.c +++ b/conf-parser.c @@ -32,7 +32,6 @@ #include "log.h" #define COMMENTS "#;\n" -#define NEWLINES "\n\r" #define LINE_MAX 4096 /* Run the user supplied parser for an assignment */ @@ -64,7 +63,10 @@ static int next_assignment( return t->parse(filename, line, section, lvalue, rvalue, t->data, userdata); } - log_info("[%s:%u] Unknown lvalue '%s' in section '%s'. Ignoring.", filename, line, lvalue, strna(section)); + /* Warn about unknown non-extension fields. */ + if (!startswith(lvalue, "X-")) + log_info("[%s:%u] Unknown lvalue '%s' in section '%s'. Ignoring.", filename, line, lvalue, strna(section)); + return 0; } @@ -109,6 +111,7 @@ static int parse_line(const char *filename, unsigned line, char **section, const return -ENOMEM; if (sections && !strv_contains((char**) sections, n)) { + log_error("[%s:%u] Unknown section '%s'.", filename, line, n); free(n); return -EBADMSG; } @@ -368,8 +371,12 @@ int config_parse_strv( if (!(n = new(char*, k+1))) return -ENOMEM; - for (k = 0; (*sv)[k]; k++) - n[k] = (*sv)[k]; + if (*sv) + for (k = 0; (*sv)[k]; k++) + n[k] = (*sv)[k]; + else + k = 0; + FOREACH_WORD_QUOTED(w, l, rvalue, state) if (!(n[k++] = strndup(w, l))) goto fail;