From: Daan De Meyer Date: Tue, 2 Dec 2025 09:28:28 +0000 (+0100) Subject: path-lookup: Add config_directory_generic() X-Git-Tag: v260-rc1~340^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b070c4c9f1cd40be5d0be46ad802de9c0ad2750;p=thirdparty%2Fsystemd.git path-lookup: Add config_directory_generic() --- diff --git a/src/libsystemd/sd-path/path-lookup.c b/src/libsystemd/sd-path/path-lookup.c index 389d7e2ad95..53439a99f3c 100644 --- a/src/libsystemd/sd-path/path-lookup.c +++ b/src/libsystemd/sd-path/path-lookup.c @@ -33,9 +33,30 @@ int user_search_dirs(const char *suffix, char ***ret_config_dirs, char ***ret_da return 0; } -int runtime_directory_generic(RuntimeScope scope, const char *suffix, char **ret) { - int r; +int config_directory_generic(RuntimeScope scope, const char *suffix, char **ret) { + assert(ret); + + /* This does not bother with $CONFIGURATION_DIRECTORY, and hence can be applied to get other + * service's config dir */ + + switch (scope) { + case RUNTIME_SCOPE_USER: + return xdg_user_config_dir(suffix, ret); + case RUNTIME_SCOPE_SYSTEM: { + char *d = path_join("/etc", suffix); + if (!d) + return -ENOMEM; + *ret = d; + return 0; + } + + default: + return -EINVAL; + } +} + +int runtime_directory_generic(RuntimeScope scope, const char *suffix, char **ret) { assert(ret); /* This does not bother with $RUNTIME_DIRECTORY, and hence can be applied to get other service's @@ -43,24 +64,19 @@ int runtime_directory_generic(RuntimeScope scope, const char *suffix, char **ret switch (scope) { case RUNTIME_SCOPE_USER: - r = xdg_user_runtime_dir(suffix, ret); - if (r < 0) - return r; - break; + return xdg_user_runtime_dir(suffix, ret); case RUNTIME_SCOPE_SYSTEM: { char *d = path_join("/run", suffix); if (!d) return -ENOMEM; *ret = d; - break; + return 0; } default: return -EINVAL; } - - return 0; } int runtime_directory(RuntimeScope scope, const char *fallback_suffix, char **ret) { diff --git a/src/libsystemd/sd-path/path-lookup.h b/src/libsystemd/sd-path/path-lookup.h index f996dcc2a6b..67a4f5d69cf 100644 --- a/src/libsystemd/sd-path/path-lookup.h +++ b/src/libsystemd/sd-path/path-lookup.h @@ -57,6 +57,7 @@ int lookup_paths_init_or_warn(LookupPaths *lp, RuntimeScope scope, LookupPathsFl void lookup_paths_log(LookupPaths *p); void lookup_paths_done(LookupPaths *p); +int config_directory_generic(RuntimeScope scope, const char *suffix, char **ret); int runtime_directory_generic(RuntimeScope scope, const char *suffix, char **ret); int runtime_directory(RuntimeScope scope, const char *fallback_suffix, char **ret);