summaryrefslogtreecommitdiff
path: root/src/shared/install.c
diff options
context:
space:
mode:
authorRoss Lagerwall <rosslagerwall@gmail.com>2013-06-17 19:11:50 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-07-13 07:56:11 -0400
commit92d430a9e03056c0f62ed49149d59aed0046d0dd (patch)
tree8f9954fdf056f4f7768f90f5a3e49de50e9f9a38 /src/shared/install.c
parent6a75304e41e4487d840057a0e5f9972e141e4540 (diff)
install: make "reenable" work with templated units
Before, "systemctl reenable getty@tty1.service" would fail with: Failed to issue method call: File exists To fix this, reimplement "reenable" explicitly as a disable followed by an enable. This is shorter and is how the man page documents its behavior.
Diffstat (limited to 'src/shared/install.c')
-rw-r--r--src/shared/install.c38
1 files changed, 5 insertions, 33 deletions
diff --git a/src/shared/install.c b/src/shared/install.c
index eb9a5fc0b5..116106824f 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -1534,43 +1534,15 @@ int unit_file_reenable(
bool force,
UnitFileChange **changes,
unsigned *n_changes) {
+ int r;
- _cleanup_lookup_paths_free_ LookupPaths paths = {};
- _cleanup_install_context_done_ InstallContext c = {};
- char **i;
- _cleanup_free_ char *config_path = NULL;
- _cleanup_set_free_free_ Set *remove_symlinks_to = NULL;
- int r, q;
-
- assert(scope >= 0);
- assert(scope < _UNIT_FILE_SCOPE_MAX);
-
- r = lookup_paths_init_from_scope(&paths, scope);
- if (r < 0)
- return r;
-
- r = get_config_path(scope, runtime, root_dir, &config_path);
+ r = unit_file_disable(scope, runtime, root_dir, files,
+ changes, n_changes);
if (r < 0)
return r;
- STRV_FOREACH(i, files) {
- r = mark_symlink_for_removal(&remove_symlinks_to, *i);
- if (r < 0)
- return r;
-
- r = install_info_add_auto(&c, *i);
- if (r < 0)
- return r;
- }
-
- r = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files);
-
- /* Returns number of symlinks that where supposed to be installed. */
- q = install_context_apply(&c, &paths, config_path, root_dir, force, changes, n_changes);
- if (r == 0)
- r = q;
-
- return r;
+ return unit_file_enable(scope, runtime, root_dir, files, force,
+ changes, n_changes);
}
int unit_file_set_default(