X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fconf-parser.c;h=86435d3bdebd3c87fa42b408a60878c9cce24212;hb=8f2665a463ffb2b822c1e3effdb292d2bddf72be;hp=161f6ad65a3ef0355dbdb301416ab436ccda7e16;hpb=3af00fb85a26a1d812363fbf88c045311fd05376;p=elogind.git diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 161f6ad65..86435d3bd 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -565,61 +565,57 @@ int config_parse_bool(const char* unit, return 0; } -int config_parse_string(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - char **s = data; - char *n; +int config_parse_string( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + char **s = data, *n; assert(filename); assert(lvalue); assert(rvalue); assert(data); - n = strdup(rvalue); - if (!n) - return log_oom(); - - if (!utf8_is_valid(n)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "String is not UTF-8 clean, ignoring assignment: %s", rvalue); - free(n); + if (!utf8_is_valid(rvalue)) { + log_syntax(unit, LOG_ERR, filename, line, EINVAL, "String is not UTF-8 clean, ignoring assignment: %s", rvalue); return 0; } - free(*s); - if (*n) - *s = n; + if (isempty(rvalue)) + n = NULL; else { - free(n); - *s = NULL; + n = strdup(rvalue); + if (!n) + return log_oom(); } + free(*s); + *s = n; + return 0; } -int config_parse_path(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { +int config_parse_path( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { - char **s = data; - char *n; - int offset; + char **s = data, *n; assert(filename); assert(lvalue); @@ -627,16 +623,12 @@ int config_parse_path(const char *unit, assert(data); if (!utf8_is_valid(rvalue)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); + log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); return 0; } - offset = rvalue[0] == '-' && (streq(lvalue, "InaccessibleDirectories") || - streq(lvalue, "ReadOnlyDirectories")); - if (!path_is_absolute(rvalue + offset)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Not an absolute path, ignoring: %s", rvalue); + if (!path_is_absolute(rvalue)) { + log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Not an absolute path, ignoring: %s", rvalue); return 0; } @@ -709,64 +701,6 @@ int config_parse_strv(const char *unit, return 0; } -int config_parse_path_strv(const char *unit, - const char *filename, - unsigned line, - const char *section, - unsigned section_line, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - char*** sv = data, *w, *state; - size_t l; - int r; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - if (isempty(rvalue)) { - /* Empty assignment resets the list */ - strv_free(*sv); - *sv = NULL; - return 0; - } - - FOREACH_WORD_QUOTED(w, l, rvalue, state) { - _cleanup_free_ char *n; - int offset; - - n = strndup(w, l); - if (!n) - return log_oom(); - - if (!utf8_is_valid(n)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Path is not UTF-8 clean, ignoring assignment: %s", rvalue); - continue; - } - - offset = n[0] == '-' && (streq(lvalue, "InaccessibleDirectories") || - streq(lvalue, "ReadOnlyDirectories")); - if (!path_is_absolute(n + offset)) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Not an absolute path, ignoring: %s", rvalue); - continue; - } - - path_kill_slashes(n); - r = strv_extend(sv, n); - if (r < 0) - return log_oom(); - } - - return 0; -} - int config_parse_mode(const char *unit, const char *filename, unsigned line,