summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Boccassi <bluca@debian.org>2023-05-12 21:29:38 +0100
committerGitHub <noreply@github.com>2023-05-12 21:29:38 +0100
commit27cead47bebd37c16d7f50e571e3dcc1ae6589d2 (patch)
tree58de1800474378db5dcefb167e0828ce830d8558 /src
parentf0ad3e6b9652fe785245934ff8604cc897d3b8f4 (diff)
parent34f2fd5096cdb26ef57998740b1b876332d968fc (diff)
downloadsystemd-27cead47bebd37c16d7f50e571e3dcc1ae6589d2.tar.gz
Merge pull request #27633 from DaanDeMeyer/repart-dropin
repart: Make sure we look up dropin files in the root directory
Diffstat (limited to 'src')
-rw-r--r--src/core/main.c1
-rw-r--r--src/network/netdev/netdev.c4
-rw-r--r--src/network/networkd-network.c2
-rw-r--r--src/partition/repart.c15
-rw-r--r--src/resolve/resolved-dnssd.c2
-rw-r--r--src/shared/conf-parser.c8
-rw-r--r--src/shared/conf-parser.h1
-rw-r--r--src/udev/net/link-config.c1
8 files changed, 18 insertions, 16 deletions
diff --git a/src/core/main.c b/src/core/main.c
index 86385d6465..3fbfc5b741 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -726,6 +726,7 @@ static int parse_config_file(void) {
(const char* const*) files,
(const char* const*) dirs,
"user.conf.d",
+ /* root = */ NULL,
"Manager\0",
config_item_table_lookup, items,
CONFIG_PARSE_WARN,
diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
index 038a27c118..2c3b0f8797 100644
--- a/src/network/netdev/netdev.c
+++ b/src/network/netdev/netdev.c
@@ -787,7 +787,7 @@ int netdev_load_one(Manager *manager, const char *filename) {
dropin_dirname = strjoina(basename(filename), ".d");
r = config_parse_many(
- STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname,
+ STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname, /* root = */ NULL,
NETDEV_COMMON_SECTIONS NETDEV_OTHER_SECTIONS,
config_item_perf_lookup, network_netdev_gperf_lookup,
CONFIG_PARSE_WARN,
@@ -823,7 +823,7 @@ int netdev_load_one(Manager *manager, const char *filename) {
NETDEV_VTABLE(netdev)->init(netdev);
r = config_parse_many(
- STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname,
+ STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname, /* root = */ NULL,
NETDEV_VTABLE(netdev)->sections,
config_item_perf_lookup, network_netdev_gperf_lookup,
CONFIG_PARSE_WARN,
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 7c5d691afa..9a0511eeef 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -493,7 +493,7 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi
};
r = config_parse_many(
- STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname,
+ STRV_MAKE_CONST(filename), NETWORK_DIRS, dropin_dirname, /* root = */ NULL,
"Match\0"
"Link\0"
"SR-IOV\0"
diff --git a/src/partition/repart.c b/src/partition/repart.c
index 8766225d6f..1f3e78a84e 100644
--- a/src/partition/repart.c
+++ b/src/partition/repart.c
@@ -1638,6 +1638,7 @@ static int partition_read_definition(Partition *p, const char *path, const char
STRV_MAKE_CONST(path),
conf_file_dirs,
dropin_dirname,
+ arg_definitions ? NULL : arg_root,
"Partition\0",
config_item_table_lookup, table,
CONFIG_PARSE_WARN,
@@ -1795,21 +1796,17 @@ static int find_verity_sibling(Context *context, Partition *p, VerityMode mode,
return 0;
}
-static int context_read_definitions(
- Context *context,
- char **directories,
- const char *root) {
-
+static int context_read_definitions(Context *context) {
_cleanup_strv_free_ char **files = NULL;
Partition *last = NULL;
- int r;
const char *const *dirs;
+ int r;
assert(context);
- dirs = (const char* const*) (directories ?: CONF_PATHS_STRV("repart.d"));
+ dirs = (const char* const*) (arg_definitions ?: CONF_PATHS_STRV("repart.d"));
- r = conf_files_list_strv(&files, ".conf", directories ? NULL : root, CONF_FILES_REGULAR|CONF_FILES_FILTER_MASKED, dirs);
+ r = conf_files_list_strv(&files, ".conf", arg_definitions ? NULL : arg_root, CONF_FILES_REGULAR|CONF_FILES_FILTER_MASKED, dirs);
if (r < 0)
return log_error_errno(r, "Failed to enumerate *.conf files: %m");
@@ -6738,7 +6735,7 @@ static int run(int argc, char *argv[]) {
strv_uniq(arg_definitions);
- r = context_read_definitions(context, arg_definitions, arg_root);
+ r = context_read_definitions(context);
if (r < 0)
return r;
diff --git a/src/resolve/resolved-dnssd.c b/src/resolve/resolved-dnssd.c
index f5a8a80ebc..994771eca7 100644
--- a/src/resolve/resolved-dnssd.c
+++ b/src/resolve/resolved-dnssd.c
@@ -88,7 +88,7 @@ static int dnssd_service_load(Manager *manager, const char *filename) {
dropin_dirname = strjoina(service->name, ".dnssd.d");
r = config_parse_many(
- STRV_MAKE_CONST(filename), DNSSD_SERVICE_DIRS, dropin_dirname,
+ STRV_MAKE_CONST(filename), DNSSD_SERVICE_DIRS, dropin_dirname, /* root = */ NULL,
"Service\0",
config_item_perf_lookup, resolved_dnssd_gperf_lookup,
CONFIG_PARSE_WARN,
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index 138a3a8cc9..21ba7f6914 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -584,6 +584,7 @@ int config_parse_config_file(
static int config_get_dropin_files(
const char* const* conf_file_dirs,
const char *dropin_dirname,
+ const char *root,
char ***ret) {
_cleanup_strv_free_ char **dropin_dirs = NULL;
@@ -599,7 +600,7 @@ static int config_get_dropin_files(
if (r < 0)
return r;
- return conf_files_list_strv(ret, ".conf", NULL, 0, (const char* const*) dropin_dirs);
+ return conf_files_list_strv(ret, ".conf", root, 0, (const char* const*) dropin_dirs);
}
/* Parse each config file in the directories specified as strv. */
@@ -607,6 +608,7 @@ int config_parse_many(
const char* const* conf_files,
const char* const* conf_file_dirs,
const char *dropin_dirname,
+ const char *root,
const char *sections,
ConfigItemLookup lookup,
const void *table,
@@ -623,7 +625,7 @@ int config_parse_many(
assert(sections);
assert(table);
- r = config_get_dropin_files(conf_file_dirs, dropin_dirname, &files);
+ r = config_get_dropin_files(conf_file_dirs, dropin_dirname, root, &files);
if (r < 0)
return r;
@@ -659,7 +661,7 @@ static int dropins_get_stats_by_path(
if (!strextend(&dropin_dirname, ".d"))
return -ENOMEM;
- r = config_get_dropin_files(conf_file_dirs, dropin_dirname, &files);
+ r = config_get_dropin_files(conf_file_dirs, dropin_dirname, /* root = */ NULL, &files);
if (r < 0)
return r;
diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h
index e5aeeac687..902717965c 100644
--- a/src/shared/conf-parser.h
+++ b/src/shared/conf-parser.h
@@ -105,6 +105,7 @@ int config_parse_many(
const char* const* conf_files, /* possibly empty */
const char* const* conf_file_dirs,
const char *dropin_dirname,
+ const char *root,
const char *sections, /* nulstr */
ConfigItemLookup lookup,
const void *table,
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index 0bea6f1c16..4c83eede7a 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -260,6 +260,7 @@ int link_load_one(LinkConfigContext *ctx, const char *filename) {
STRV_MAKE_CONST(filename),
NETWORK_DIRS,
dropin_dirname,
+ /* root = */ NULL,
"Match\0"
"Link\0"
"SR-IOV\0",