summaryrefslogtreecommitdiff
path: root/src/shared/install.c
diff options
context:
space:
mode:
authorSteven Allen <steven@stebalien.com>2014-09-28 14:54:25 -0700
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-10-02 10:37:30 -0400
commit718880ba0d557a045e2f969e141cbd59e78c76f4 (patch)
tree24adb053b3e39a34f441a0b834013e6c0d28e03c /src/shared/install.c
parent9fd290443f5f99fca0dcd4216b1de70f7d3b8db1 (diff)
add a transient user unit directory
This patch adds a transient user unit directory under `$XDG_RUNTIME_DIR/systemd/user/` and stores transient user-instance units (such as those created by `systemd-run --user`) under there instead of putting them in $XDG_CONFIG_HOME/systemd/user/. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=67331
Diffstat (limited to 'src/shared/install.c')
-rw-r--r--src/shared/install.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/shared/install.c b/src/shared/install.c
index 61e572bdf3..302b5237a6 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -105,10 +105,14 @@ static int get_config_path(UnitFileScope scope, bool runtime, const char *root_d
case UNIT_FILE_USER:
- if (root_dir || runtime)
+ if (root_dir)
return -EINVAL;
- r = user_config_home(&p);
+ if (runtime)
+ r = user_runtime(&p);
+ else
+ r = user_config_home(&p);
+
if (r <= 0)
return r < 0 ? r : -ENOENT;
@@ -527,36 +531,33 @@ static int find_symlinks_in_scope(
UnitFileState *state) {
int r;
- _cleanup_free_ char *path2 = NULL;
+ _cleanup_free_ char *path = NULL;
bool same_name_link_runtime = false, same_name_link = false;
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(name);
- if (scope == UNIT_FILE_SYSTEM || scope == UNIT_FILE_GLOBAL) {
- _cleanup_free_ char *path = NULL;
- /* First look in runtime config path */
- r = get_config_path(scope, true, root_dir, &path);
- if (r < 0)
- return r;
+ /* First look in runtime config path */
+ r = get_config_path(scope, true, root_dir, &path);
+ if (r < 0)
+ return r;
- r = find_symlinks(name, path, &same_name_link_runtime);
- if (r < 0)
- return r;
- else if (r > 0) {
- *state = UNIT_FILE_ENABLED_RUNTIME;
- return r;
- }
+ r = find_symlinks(name, path, &same_name_link_runtime);
+ if (r < 0)
+ return r;
+ else if (r > 0) {
+ *state = UNIT_FILE_ENABLED_RUNTIME;
+ return r;
}
/* Then look in the normal config path */
- r = get_config_path(scope, false, root_dir, &path2);
+ r = get_config_path(scope, false, root_dir, &path);
if (r < 0)
return r;
- r = find_symlinks(name, path2, &same_name_link);
+ r = find_symlinks(name, path, &same_name_link);
if (r < 0)
return r;
else if (r > 0) {