diff options
author | Josh Triplett <josh@joshtriplett.org> | 2014-10-29 05:10:48 -0700 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-11-26 19:11:37 -0500 |
commit | e8461023531de98ac6a49eff9d6ffeff6315249c (patch) | |
tree | 99230bec08ffa8c0c60a1c3c018833793b41140f /src/shared/conf-parser.c | |
parent | 7f0a55d4325f7df91f91b3b818f61f97d78df14a (diff) |
logind: Support logind.conf.d directories in the usual search paths
This makes it possible to drop in logind configuration snippets from a
package or other configuration management mechanism.
Add documentation to the header of /etc/logind.conf pointing the user at
/etc/logind.conf.d/*.conf.
Introduce a new helper, conf_parse_many, to parse configuration files in
a search path.
Diffstat (limited to 'src/shared/conf-parser.c')
-rw-r--r-- | src/shared/conf-parser.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index ee6de653e1..027c49ce3b 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -27,6 +27,7 @@ #include <netinet/ether.h> #include "conf-parser.h" +#include "conf-files.h" #include "util.h" #include "macro.h" #include "strv.h" @@ -430,6 +431,37 @@ int config_parse(const char *unit, return 0; } +/* Parse each config file in the specified directories. */ +int config_parse_many(const char *conf_file, + const char *conf_file_dirs, + const char *sections, + ConfigItemLookup lookup, + const void *table, + bool relaxed, + void *userdata) { + _cleanup_strv_free_ char **files = NULL; + char **fn; + int r; + + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); + if (r < 0) + return r; + + if (conf_file) { + r = config_parse(NULL, conf_file, NULL, sections, lookup, table, relaxed, false, true, userdata); + if (r < 0) + return r; + } + + STRV_FOREACH(fn, files) { + r = config_parse(NULL, *fn, NULL, sections, lookup, table, relaxed, false, true, userdata); + if (r < 0) + return r; + } + + return 0; +} + #define DEFINE_PARSER(type, vartype, conv_func) \ int config_parse_##type(const char *unit, \ const char *filename, \ |