|
|
7f93bc2 |
From f1bfb88cea3730c921d7a1d466621c13cdb611ac Mon Sep 17 00:00:00 2001
|
|
|
a59965a |
From: Lennart Poettering <lennart@poettering.net>
|
|
|
a59965a |
Date: Tue, 17 Jun 2014 00:33:39 +0200
|
|
|
a59965a |
Subject: [PATCH] install: make sure "systemctl disable foobar@.service"
|
|
|
a59965a |
actually removes all instances
|
|
|
a59965a |
|
|
|
a59965a |
(cherry picked from commit 559367add5e22bf32d14fa1496512c68488f48b0)
|
|
|
a59965a |
|
|
|
a59965a |
Conflicts:
|
|
|
a59965a |
src/shared/install.c
|
|
|
a59965a |
|
|
|
a59965a |
(cherry picked from commit b83e096610a05b7bb3b096cebd634ef3717c4b2c)
|
|
|
a59965a |
---
|
|
|
a59965a |
src/shared/install.c | 21 +++++++++++++++++----
|
|
|
a59965a |
1 file changed, 17 insertions(+), 4 deletions(-)
|
|
|
a59965a |
|
|
|
a59965a |
diff --git a/src/shared/install.c b/src/shared/install.c
|
|
|
a59965a |
index 00a6a77..e772c45 100644
|
|
|
a59965a |
--- a/src/shared/install.c
|
|
|
a59965a |
+++ b/src/shared/install.c
|
|
|
a59965a |
@@ -267,8 +267,21 @@ static int remove_marked_symlinks_fd(
|
|
|
a59965a |
|
|
|
a59965a |
if (unit_name_is_instance(de->d_name) &&
|
|
|
a59965a |
instance_whitelist &&
|
|
|
a59965a |
- !strv_contains(instance_whitelist, de->d_name))
|
|
|
a59965a |
- continue;
|
|
|
a59965a |
+ !strv_contains(instance_whitelist, de->d_name)) {
|
|
|
a59965a |
+ _cleanup_free_ char *w;
|
|
|
a59965a |
+
|
|
|
a59965a |
+ /* OK, the file is not listed directly
|
|
|
a59965a |
+ * in the whitelist, so let's check if
|
|
|
a59965a |
+ * the template of it might be
|
|
|
a59965a |
+ * listed. */
|
|
|
a59965a |
+
|
|
|
a59965a |
+ w = unit_name_template(de->d_name);
|
|
|
a59965a |
+ if (!w)
|
|
|
a59965a |
+ return -ENOMEM;
|
|
|
a59965a |
+
|
|
|
a59965a |
+ if (!strv_contains(instance_whitelist, w))
|
|
|
a59965a |
+ continue;
|
|
|
a59965a |
+ }
|
|
|
a59965a |
|
|
|
a59965a |
p = path_make_absolute(de->d_name, path);
|
|
|
a59965a |
if (!p)
|
|
|
a59965a |
@@ -297,10 +310,10 @@ static int remove_marked_symlinks_fd(
|
|
|
a59965a |
continue;
|
|
|
a59965a |
}
|
|
|
a59965a |
|
|
|
a59965a |
- rmdir_parents(p, config_path);
|
|
|
a59965a |
-
|
|
|
a59965a |
path_kill_slashes(p);
|
|
|
a59965a |
|
|
|
a59965a |
+ rmdir_parents(p, config_path);
|
|
|
a59965a |
+
|
|
|
a59965a |
add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
|
|
|
a59965a |
|
|
|
a59965a |
if (!set_get(remove_symlinks_to, p)) {
|