diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 9919b2f2c2..e71af2f7cb 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -263,10 +263,8 @@ static int acquire_generator_dirs( if (tempdir) prefix = tempdir; - else if (scope == UNIT_FILE_SYSTEM) prefix = "/run/systemd"; - else if (scope == UNIT_FILE_USER) { const char *e; @@ -484,6 +482,10 @@ int lookup_paths_init( assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); +#if HAVE_SPLIT_USR + flags |= LOOKUP_PATHS_SPLIT_USR; +#endif + if (!empty_or_root(root_dir)) { if (scope == UNIT_FILE_USER) return -EINVAL; @@ -582,9 +584,7 @@ int lookup_paths_init( "/usr/local/lib/systemd/system", SYSTEM_DATA_UNIT_PATH, "/usr/lib/systemd/system", -#if HAVE_SPLIT_USR - "/lib/systemd/system", -#endif + STRV_IFNOTNULL(flags & LOOKUP_PATHS_SPLIT_USR ? "/lib/systemd/system" : NULL), STRV_IFNOTNULL(generator_late), NULL); break; diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h index f5bba63f5b..357816fd08 100644 --- a/src/shared/path-lookup.h +++ b/src/shared/path-lookup.h @@ -15,8 +15,9 @@ typedef struct LookupPaths LookupPaths; #include "macro.h" typedef enum LookupPathsFlags { - LOOKUP_PATHS_EXCLUDE_GENERATED = 1 << 0, - LOOKUP_PATHS_TEMPORARY_GENERATED = 1 << 1, + LOOKUP_PATHS_EXCLUDE_GENERATED = 1U << 0, + LOOKUP_PATHS_TEMPORARY_GENERATED = 1U << 1, + LOOKUP_PATHS_SPLIT_USR = 1U << 2, } LookupPathsFlags; struct LookupPaths {