summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2020-02-14 22:43:38 +0100
committerBenjamin Berg <bberg@redhat.com>2020-03-04 11:24:33 +0100
commitcccf570355c9ffcf34cea5f70e5714765ab002fe (patch)
tree80393109c0326ad81914170ac4c7ed20a5e6e9e8 /src
parenttimesync, meson: allow statically linked build (diff)
downloadsystemd-cccf570355c9ffcf34cea5f70e5714765ab002fe.tar.xz
systemd-cccf570355c9ffcf34cea5f70e5714765ab002fe.zip
core: Move environment generator path lookup into path-lookup.c
Diffstat (limited to 'src')
-rw-r--r--src/core/manager.c26
-rw-r--r--src/shared/path-lookup.c14
-rw-r--r--src/shared/path-lookup.h1
3 files changed, 21 insertions, 20 deletions
diff --git a/src/core/manager.c b/src/core/manager.c
index 25afdbea04..38f7ba1eb8 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -3826,25 +3826,9 @@ static bool generator_path_any(const char* const* paths) {
return found;
}
-static const char *const system_env_generator_binary_paths[] = {
- "/run/systemd/system-environment-generators",
- "/etc/systemd/system-environment-generators",
- "/usr/local/lib/systemd/system-environment-generators",
- SYSTEM_ENV_GENERATOR_PATH,
- NULL
-};
-
-static const char *const user_env_generator_binary_paths[] = {
- "/run/systemd/user-environment-generators",
- "/etc/systemd/user-environment-generators",
- "/usr/local/lib/systemd/user-environment-generators",
- USER_ENV_GENERATOR_PATH,
- NULL
-};
-
static int manager_run_environment_generators(Manager *m) {
char **tmp = NULL; /* this is only used in the forked process, no cleanup here */
- const char *const *paths;
+ _cleanup_strv_free_ char **paths = NULL;
void* args[] = {
[STDOUT_GENERATE] = &tmp,
[STDOUT_COLLECT] = &tmp,
@@ -3855,13 +3839,15 @@ static int manager_run_environment_generators(Manager *m) {
if (MANAGER_IS_TEST_RUN(m) && !(m->test_run_flags & MANAGER_TEST_RUN_ENV_GENERATORS))
return 0;
- paths = MANAGER_IS_SYSTEM(m) ? system_env_generator_binary_paths : user_env_generator_binary_paths;
+ paths = env_generator_binary_paths(MANAGER_IS_SYSTEM(m));
+ if (!paths)
+ return log_oom();
- if (!generator_path_any(paths))
+ if (!generator_path_any((const char* const*) paths))
return 0;
RUN_WITH_UMASK(0022)
- r = execute_directories(paths, DEFAULT_TIMEOUT_USEC, gather_environment,
+ r = execute_directories((const char* const*) paths, DEFAULT_TIMEOUT_USEC, gather_environment,
args, NULL, m->transient_environment, EXEC_DIR_PARALLEL | EXEC_DIR_IGNORE_ERRORS);
return r;
}
diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
index 5b16209745..c98d699424 100644
--- a/src/shared/path-lookup.c
+++ b/src/shared/path-lookup.c
@@ -837,3 +837,17 @@ char **generator_binary_paths(UnitFileScope scope) {
assert_not_reached("Hmm, unexpected scope.");
}
}
+
+char **env_generator_binary_paths(bool is_system) {
+
+ if (is_system)
+ return strv_new("/run/systemd/system-environment-generators",
+ "/etc/systemd/system-environment-generators",
+ "/usr/local/lib/systemd/system-environment-generators",
+ SYSTEM_ENV_GENERATOR_PATH);
+ else
+ return strv_new("/run/systemd/user-environment-generators",
+ "/etc/systemd/user-environment-generators",
+ "/usr/local/lib/systemd/user-environment-generators",
+ USER_ENV_GENERATOR_PATH);
+}
diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h
index f0762d248a..b99e918144 100644
--- a/src/shared/path-lookup.h
+++ b/src/shared/path-lookup.h
@@ -72,3 +72,4 @@ void lookup_paths_flush_generator(LookupPaths *p);
void lookup_paths_free(LookupPaths *p);
char **generator_binary_paths(UnitFileScope scope);
+char **env_generator_binary_paths(bool is_system);