chiark / gitweb /
journald: turn off COW for journal files on btrfs
[elogind.git] / src / shared / path-lookup.c
index 3a6e117d28c56702d365897868bea3e4134c3e34..051f1a4835c4ae99c90a0de6f34e62498f14306a 100644 (file)
@@ -61,7 +61,7 @@ int user_config_home(char **config_home) {
         return 0;
 }
 
-int user_runtime(char **user_runtime_path) {
+int user_runtime_dir(char **runtime_dir) {
         const char *e;
         char *r;
 
@@ -71,7 +71,7 @@ int user_runtime(char **user_runtime_path) {
                 if (!r)
                         return -ENOMEM;
 
-                *user_runtime_path = r;
+                *runtime_dir = r;
                 return 1;
         }
 
@@ -101,7 +101,7 @@ static char** user_dirs(
         };
 
         const char *home, *e;
-        _cleanup_free_ char *config_home = NULL, *user_runtime_dir = NULL, *data_home = NULL;
+        _cleanup_free_ char *config_home = NULL, *runtime_dir = NULL, *data_home = NULL;
         _cleanup_strv_free_ char **config_dirs = NULL, **data_dirs = NULL;
         char **r = NULL;
 
@@ -117,7 +117,7 @@ static char** user_dirs(
         if (user_config_home(&config_home) < 0)
                 goto fail;
 
-        if (user_runtime(&user_runtime_dir) < 0)
+        if (user_runtime_dir(&runtime_dir) < 0)
                 goto fail;
 
         home = getenv("HOME");
@@ -162,18 +162,18 @@ static char** user_dirs(
                 if (strv_extend(&r, config_home) < 0)
                         goto fail;
 
-        if (user_runtime_dir)
-                if (strv_extend(&r, user_runtime_dir) < 0)
+        if (!strv_isempty(config_dirs))
+                if (strv_extend_strv_concat(&r, config_dirs, "/systemd/user") < 0)
                         goto fail;
 
-        if (strv_extend(&r, runtime_unit_path) < 0)
+        if (strv_extend_strv(&r, (char**) config_unit_paths) < 0)
                 goto fail;
 
-        if (!strv_isempty(config_dirs))
-                if (strv_extend_strv_concat(&r, config_dirs, "/systemd/user") < 0)
+        if (runtime_dir)
+                if (strv_extend(&r, runtime_dir) < 0)
                         goto fail;
 
-        if (strv_extend_strv(&r, (char**) config_unit_paths) < 0)
+        if (strv_extend(&r, runtime_unit_path) < 0)
                 goto fail;
 
         if (generator)
@@ -398,3 +398,19 @@ void lookup_paths_free(LookupPaths *p) {
         p->sysvinit_path = p->sysvrcnd_path = NULL;
 #endif
 }
+
+int lookup_paths_init_from_scope(LookupPaths *paths,
+                                 UnitFileScope scope,
+                                 const char *root_dir) {
+        assert(paths);
+        assert(scope >= 0);
+        assert(scope < _UNIT_FILE_SCOPE_MAX);
+
+        zero(*paths);
+
+        return lookup_paths_init(paths,
+                                 scope == UNIT_FILE_SYSTEM ? SYSTEMD_SYSTEM : SYSTEMD_USER,
+                                 scope == UNIT_FILE_USER,
+                                 root_dir,
+                                 NULL, NULL, NULL);
+}