]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
path-lookup: Add config_directory_generic()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 2 Dec 2025 09:28:28 +0000 (10:28 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 21 Jan 2026 11:03:08 +0000 (12:03 +0100)
src/libsystemd/sd-path/path-lookup.c
src/libsystemd/sd-path/path-lookup.h

index 389d7e2ad95ae6e9799bb0cc676853b7bd948475..53439a99f3cfa2dae801ffa2cd475163c717e343 100644 (file)
@@ -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) {
index f996dcc2a6b83787e783e5965c2a881408500ef7..67a4f5d69cf0f5db56c5c3aa80c4bad98b4d2d7e 100644 (file)
@@ -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);