diff options
author | Steven Allen <steven@stebalien.com> | 2014-09-28 14:54:25 -0700 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-10-02 10:37:30 -0400 |
commit | 718880ba0d557a045e2f969e141cbd59e78c76f4 (patch) | |
tree | 24adb053b3e39a34f441a0b834013e6c0d28e03c /src/shared/install.c | |
parent | 9fd290443f5f99fca0dcd4216b1de70f7d3b8db1 (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.c | 37 |
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) { |