X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fpath-lookup.c;h=fa4995ceea835d2632534980f509e3242c9ae491;hb=cdf3f17bfb20eac2929c8b6a582b988b790f071d;hp=32ddb388656637da8e0653d07910ec0854420c8e;hpb=07719a21b6425d378b36bb8d7f47ad5ec5296d28;p=elogind.git diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 32ddb3886..fa4995cee 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -31,6 +32,13 @@ #include "path-util.h" #include "path-lookup.h" +static const char* const systemd_running_as_table[_SYSTEMD_RUNNING_AS_MAX] = { + [SYSTEMD_SYSTEM] = "system", + [SYSTEMD_USER] = "user" +}; + +DEFINE_STRING_TABLE_LOOKUP(systemd_running_as, SystemdRunningAs); + int user_config_home(char **config_home) { const char *e; @@ -122,7 +130,7 @@ static char** user_dirs( * then filter out this link, if it is actually is * one. */ - mkdir_parents(data_home, 0777); + mkdir_parents_label(data_home, 0777); (void) symlink("../../../.config/systemd/user", data_home); } @@ -224,14 +232,13 @@ fail: int lookup_paths_init( LookupPaths *p, - ManagerRunningAs running_as, + SystemdRunningAs running_as, bool personal, const char *generator, const char *generator_early, const char *generator_late) { const char *e; - char *t; assert(p); @@ -256,7 +263,7 @@ int lookup_paths_init( * for the system stuff but avoid it for user * stuff. */ - if (running_as == MANAGER_USER) { + if (running_as == SYSTEMD_USER) { if (personal) p->unit_path = user_dirs(generator, generator_early, generator_late); @@ -308,22 +315,19 @@ int lookup_paths_init( return -ENOMEM; strv_uniq(p->unit_path); - path_strv_remove_empty(p->unit_path); if (!strv_isempty(p->unit_path)) { - - t = strv_join(p->unit_path, "\n\t"); + char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t"); if (!t) return -ENOMEM; - log_debug("Looking for unit files in:\n\t%s", t); - free(t); + log_info("Looking for unit files in (higher priority first):\n\t%s", t); } else { - log_debug("Ignoring unit files."); + log_info("Ignoring unit files."); strv_free(p->unit_path); p->unit_path = NULL; } - if (running_as == MANAGER_SYSTEM) { + if (running_as == SYSTEMD_SYSTEM) { #ifdef HAVE_SYSV_COMPAT /* /etc/init.d/ compatibility does not matter to users */ @@ -371,37 +375,32 @@ int lookup_paths_init( strv_uniq(p->sysvinit_path); strv_uniq(p->sysvrcnd_path); - path_strv_remove_empty(p->sysvinit_path); - path_strv_remove_empty(p->sysvrcnd_path); if (!strv_isempty(p->sysvinit_path)) { - - t = strv_join(p->sysvinit_path, "\n\t"); + char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t"); if (!t) return -ENOMEM; - log_debug("Looking for SysV init scripts in:\n\t%s", t); - free(t); + log_info("Looking for SysV init scripts in:\n\t%s", t); } else { - log_debug("Ignoring SysV init scripts."); + log_info("Ignoring SysV init scripts."); strv_free(p->sysvinit_path); p->sysvinit_path = NULL; } if (!strv_isempty(p->sysvrcnd_path)) { - - t = strv_join(p->sysvrcnd_path, "\n\t"); + char _cleanup_free_ *t = + strv_join(p->sysvrcnd_path, "\n\t"); if (!t) return -ENOMEM; log_debug("Looking for SysV rcN.d links in:\n\t%s", t); - free(t); } else { log_debug("Ignoring SysV rcN.d links."); strv_free(p->sysvrcnd_path); p->sysvrcnd_path = NULL; } #else - log_debug("Disabled SysV init scripts and rcN.d links support"); + log_info("SysV init scripts and rcN.d links support disabled"); #endif }