|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
From f906059875069ef0b72e54581d78fe4e28b375a3 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:10:54 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
Subject: [PATCH] install: various modernizations
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
(cherry picked from commit 1dacfd2ad643019f41fb979f5a8c144172911f85)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
src/shared/install.c | 47 ++++++++++++++++++++++-------------------------
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
1 file changed, 22 insertions(+), 25 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 40dc7beb..0f49f2a9 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 |
@@ -287,30 +287,31 @@ static int remove_marked_symlinks_fd(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
set_get(remove_symlinks_to, dest) ||
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
set_get(remove_symlinks_to, basename(dest));
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- if (found) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (!found)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ continue;
|
|
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 |
+ 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 |
+ rmdir_parents(p, config_path);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- path_kill_slashes(p);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ path_kill_slashes(p);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
|
|
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)) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (!set_get(remove_symlinks_to, p)) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- q = mark_symlink_for_removal(&remove_symlinks_to, p);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- if (q < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- if (r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- r = q;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- } else
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- *deleted = true;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- }
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ q = mark_symlink_for_removal(&remove_symlinks_to, p);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (q < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ r = q;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ } else
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ *deleted = true;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -417,10 +418,8 @@ static int find_symlinks_fd(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
/* This will close nfd, regardless whether it succeeds or not */
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
q = find_symlinks_fd(name, nfd, p, config_path, same_name_link);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (q > 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
return 1;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
r = q;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -595,7 +594,6 @@ int unit_file_mask(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (symlink("/dev/null", path) >= 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, "/dev/null");
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
continue;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -762,7 +760,6 @@ int unit_file_link(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
_cleanup_free_ char *dest = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
q = readlink_and_make_absolute(path, &dest);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (q < 0 && errno != ENOENT) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (r == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
r = q;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -1302,8 +1299,8 @@ static int install_info_symlink_link(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
UnitFileChange **changes,
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
unsigned *n_changes) {
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- int r;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
_cleanup_free_ char *path = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ int r;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
assert(i);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
assert(paths);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
@@ -1314,11 +1311,11 @@ static int install_info_symlink_link(
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
if (r != 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
return r;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- if (asprintf(&path, "%s/%s", config_path, i->name) < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ path = strjoin(config_path, "/", i->name, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ if (!path)
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- r = create_symlink(i->path, path, force, changes, n_changes);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
- return r;
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
+ return create_symlink(i->path, path, force, changes, n_changes);
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
|
|
Zbigniew Jędrzejewski-Szmek |
5509c0 |
static int install_info_apply(
|