diff --git a/man/sd_path_lookup.xml b/man/sd_path_lookup.xml index 8fe04ae8af..9190e6b00a 100644 --- a/man/sd_path_lookup.xml +++ b/man/sd_path_lookup.xml @@ -41,6 +41,7 @@ SD_PATH_SYSTEM_STATE_FACTORY, SD_PATH_SYSTEM_CONFIGURATION, + SD_PATH_SYSTEM_SEARCH_CONFIGURATION, SD_PATH_SYSTEM_RUNTIME, SD_PATH_SYSTEM_RUNTIME_LOGS, SD_PATH_SYSTEM_STATE_PRIVATE, @@ -76,7 +77,6 @@ SD_PATH_SEARCH_CONFIGURATION_FACTORY, SD_PATH_SEARCH_STATE_FACTORY, SD_PATH_SEARCH_CONFIGURATION, - SD_PATH_SEARCH_SYSCTL, SD_PATH_SYSTEMD_UTIL, SD_PATH_SYSTEMD_SYSTEM_UNIT, diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c index e3877fff4a..b80b8ca68d 100644 --- a/src/libsystemd/sd-path/sd-path.c +++ b/src/libsystemd/sd-path/sd-path.c @@ -524,6 +524,9 @@ static int get_search(uint64_t type, char ***ret) { switch (type) { + case SD_PATH_SYSTEM_SEARCH_CONFIGURATION: + return strv_from_nulstr(ret, CONF_PATHS_NULSTR("")); + case SD_PATH_SEARCH_BINARIES: return search_from_environment(ret, NULL, @@ -683,11 +686,7 @@ static int get_search(uint64_t type, char ***ret) { *ret = TAKE_PTR(l); return 0; - } - - case SD_PATH_SEARCH_SYSCTL: - return strv_from_nulstr(ret, CONF_PATHS_NULSTR("sysctl.d")); - } + }} return -EOPNOTSUPP; } diff --git a/src/path/path-tool.c b/src/path/path-tool.c index 92dbd3496b..227468dfe8 100644 --- a/src/path/path-tool.c +++ b/src/path/path-tool.c @@ -22,6 +22,8 @@ static const char* const path_table[_SD_PATH_MAX] = { [SD_PATH_TEMPORARY] = "temporary", [SD_PATH_TEMPORARY_LARGE] = "temporary-large", + [SD_PATH_SYSTEM_SEARCH_CONFIGURATION] = "system-search-configuration", + [SD_PATH_SYSTEM_BINARIES] = "system-binaries", [SD_PATH_SYSTEM_INCLUDE] = "system-include", [SD_PATH_SYSTEM_LIBRARY_PRIVATE] = "system-library-private", @@ -66,7 +68,6 @@ static const char* const path_table[_SD_PATH_MAX] = { [SD_PATH_SEARCH_CONFIGURATION_FACTORY] = "search-configuration-factory", [SD_PATH_SEARCH_STATE_FACTORY] = "search-state-factory", [SD_PATH_SEARCH_CONFIGURATION] = "search-configuration", - [SD_PATH_SEARCH_SYSCTL] = "search-sysctl", [SD_PATH_SYSTEMD_UTIL] = "systemd-util", diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index e90d6c3799..d761c7375a 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -4,8 +4,6 @@ #include #include -#include "sd-path.h" - #include "alloc-util.h" #include "build.h" #include "conf-files.h" @@ -281,10 +279,10 @@ static int parse_line(const char *fname, unsigned line, const char *buffer, bool return 0; } -static int parse_file(OrderedHashmap **sysctl_options, const char *path, bool ignore_enoent, const char **search_paths) { +static int parse_file(OrderedHashmap **sysctl_options, const char *path, bool ignore_enoent) { return conf_file_read( /* root = */ NULL, - search_paths, + (const char**) CONF_PATHS_STRV("sysctl.d"), path, parse_line, sysctl_options, @@ -307,7 +305,7 @@ static int read_credential_lines(OrderedHashmap **sysctl_options) { if (!j) return log_oom(); - return parse_file(sysctl_options, j, /* ignore_enoent= */ true, /* search_paths= */ NULL); + return parse_file(sysctl_options, j, /* ignore_enoent= */ true); } static int cat_config(char **files) { @@ -442,13 +440,8 @@ static int parse_argv(int argc, char *argv[]) { static int run(int argc, char *argv[]) { _cleanup_ordered_hashmap_free_ OrderedHashmap *sysctl_options = NULL; - _cleanup_strv_free_ char **search_paths = NULL; int r; - r = sd_path_lookup_strv(SD_PATH_SEARCH_SYSCTL, /* suffix= */ NULL, &search_paths); - if (r < 0) - return log_error_errno(r, "Failed to get sysctl.d/ search paths: %m"); - r = parse_argv(argc, argv); if (r <= 0) return r; @@ -465,12 +458,12 @@ static int run(int argc, char *argv[]) { /* Use (argument):n, where n==1 for the first positional arg */ RET_GATHER(r, parse_line("(argument)", ++pos, *arg, /* invalid_config = */ NULL, &sysctl_options)); else - RET_GATHER(r, parse_file(&sysctl_options, *arg, /* ignore_enoent= */ false, (const char**) search_paths)); + RET_GATHER(r, parse_file(&sysctl_options, *arg, false)); } } else { _cleanup_strv_free_ char **files = NULL; - r = conf_files_list_strv(&files, ".conf", NULL, 0, (const char**) search_paths); + r = conf_files_list_strv(&files, ".conf", NULL, 0, (const char**) CONF_PATHS_STRV("sysctl.d")); if (r < 0) return log_error_errno(r, "Failed to enumerate sysctl.d files: %m"); @@ -478,7 +471,7 @@ static int run(int argc, char *argv[]) { return cat_config(files); STRV_FOREACH(f, files) - RET_GATHER(r, parse_file(&sysctl_options, *f, /* ignore_enoent= */ true, /* search_paths= */ NULL)); + RET_GATHER(r, parse_file(&sysctl_options, *f, true)); RET_GATHER(r, read_credential_lines(&sysctl_options)); } diff --git a/src/systemd/sd-path.h b/src/systemd/sd-path.h index 3199996011..2718cf8266 100644 --- a/src/systemd/sd-path.h +++ b/src/systemd/sd-path.h @@ -44,6 +44,9 @@ __extension__ enum { SD_PATH_SYSTEM_STATE_CACHE, SD_PATH_SYSTEM_STATE_SPOOL, + /* generic system configuration */ + SD_PATH_SYSTEM_SEARCH_CONFIGURATION, + /* Vendor supplied data */ SD_PATH_USER_BINARIES, SD_PATH_USER_LIBRARY_PRIVATE, @@ -129,8 +132,6 @@ __extension__ enum { SD_PATH_USER_CREDENTIAL_STORE_ENCRYPTED, SD_PATH_USER_SEARCH_CREDENTIAL_STORE_ENCRYPTED, - SD_PATH_SEARCH_SYSCTL, - _SD_PATH_MAX, _SD_PATH_INVALID = UINT64_MAX }; diff --git a/test/units/TEST-74-AUX-UTILS.path.sh b/test/units/TEST-74-AUX-UTILS.path.sh index 79056a5b2b..4547f53e24 100755 --- a/test/units/TEST-74-AUX-UTILS.path.sh +++ b/test/units/TEST-74-AUX-UTILS.path.sh @@ -51,6 +51,8 @@ assert_eq "$(systemd-path --suffix='' system-runtime)" "/run" assert_eq "$(systemd-path --suffix='🤔' system-runtime)" "/run/🤔" assert_eq "$(systemd-path --suffix=hello system-runtime)" "/run/hello" +assert_eq "$(systemd-path system-search-configuration --suffix=sysctl.d)" "/etc/sysctl.d:/run/sysctl.d:/usr/local/lib/sysctl.d:/usr/lib/sysctl.d" + # Note for the stuff below: everything defaults to $HOME, only the desktop # directory defaults to $HOME/Desktop. #