|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
From 90d16404421d61e4e13bcff35f914477b9d04d81 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
Date: Tue, 17 Jun 2014 00:33:39 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
Subject: [PATCH] install: make sure "systemctl disable foobar@.service"
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
actually removes all instances
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
(cherry picked from commit 559367add5e22bf32d14fa1496512c68488f48b0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
src/shared/install.c | 24 +++++++++++++++++-------
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
1 file changed, 17 insertions(+), 7 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
diff --git a/src/shared/install.c b/src/shared/install.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
index e16de4d6..278350be 100644
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
--- a/src/shared/install.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+++ b/src/shared/install.c
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -266,8 +266,22 @@ static int remove_marked_symlinks_fd(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (unit_name_is_instance(de->d_name) &&
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
instance_whitelist &&
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- !strv_contains(instance_whitelist, de->d_name))
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- continue;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ !strv_contains(instance_whitelist, de->d_name)) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ _cleanup_free_ char *w;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ /* OK, the file is not listed directly
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ * in the whitelist, so let's check if
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ * the template of it might be
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ * listed. */
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ w = unit_name_template(de->d_name);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (!w)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (!strv_contains(instance_whitelist, w))
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ continue;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
p = path_make_absolute(de->d_name, path);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (!p)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -290,18 +304,14 @@ static int remove_marked_symlinks_fd(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (!found)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (unlink(p) < 0 && errno != ENOENT) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
r = -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- rmdir_parents(p, config_path);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
path_kill_slashes(p);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ rmdir_parents(p, config_path);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (!set_get(remove_symlinks_to, p)) {
|