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.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
7f0a55d432
commit
e846102353
@@ -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, \
|
||||
|
||||
Reference in New Issue
Block a user