dcavalca / rpms / systemd

Forked from rpms/systemd 2 years ago
Clone
Zbigniew Jędrzejewski-Szmek 7f93bc
From bed108402ded5dc88cf37ce48936453b15912027 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek a59965
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek a59965
Date: Mon, 16 Jun 2014 17:19:30 +0200
Zbigniew Jędrzejewski-Szmek a59965
Subject: [PATCH] install: various modernizations
Zbigniew Jędrzejewski-Szmek a59965
Zbigniew Jędrzejewski-Szmek a59965
(cherry picked from commit da39f6a63e9ca59bec23cc9d1cb841703bb5ef56)
Zbigniew Jędrzejewski-Szmek a59965
---
Zbigniew Jędrzejewski-Szmek a59965
 src/shared/install.c | 43 ++++++++++++++-----------------------------
Zbigniew Jędrzejewski-Szmek a59965
 1 file changed, 14 insertions(+), 29 deletions(-)
Zbigniew Jędrzejewski-Szmek a59965
Zbigniew Jędrzejewski-Szmek a59965
diff --git a/src/shared/install.c b/src/shared/install.c
Zbigniew Jędrzejewski-Szmek a59965
index c9c785a..1f3ea5b 100644
Zbigniew Jędrzejewski-Szmek a59965
--- a/src/shared/install.c
Zbigniew Jędrzejewski-Szmek a59965
+++ b/src/shared/install.c
Zbigniew Jędrzejewski-Szmek a59965
@@ -320,7 +320,8 @@ static int remove_marked_symlinks(
Zbigniew Jędrzejewski-Szmek a59965
                 unsigned *n_changes,
Zbigniew Jędrzejewski-Szmek a59965
                 char** files) {
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        int fd, r = 0;
Zbigniew Jędrzejewski-Szmek a59965
+        _cleanup_close_ int fd = -1;
Zbigniew Jędrzejewski-Szmek a59965
+        int r = 0;
Zbigniew Jędrzejewski-Szmek a59965
         bool deleted;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         assert(config_path);
Zbigniew Jędrzejewski-Szmek a59965
@@ -348,8 +349,6 @@ static int remove_marked_symlinks(
Zbigniew Jędrzejewski-Szmek a59965
                         r = q;
Zbigniew Jędrzejewski-Szmek a59965
         } while (deleted);
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        safe_close(fd);
Zbigniew Jędrzejewski-Szmek a59965
-
Zbigniew Jędrzejewski-Szmek a59965
         return r;
Zbigniew Jędrzejewski-Szmek a59965
 }
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
@@ -1823,11 +1822,11 @@ int unit_file_preset(
Zbigniew Jędrzejewski-Szmek a59965
                 UnitFileChange **changes,
Zbigniew Jędrzejewski-Szmek a59965
                 unsigned *n_changes) {
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        _cleanup_lookup_paths_free_ LookupPaths paths = {};
Zbigniew Jędrzejewski-Szmek a59965
         _cleanup_install_context_done_ InstallContext plus = {}, minus = {};
Zbigniew Jędrzejewski-Szmek a59965
-        char **i;
Zbigniew Jędrzejewski-Szmek a59965
-        _cleanup_free_ char *config_path = NULL;
Zbigniew Jędrzejewski-Szmek a59965
         _cleanup_set_free_free_ Set *remove_symlinks_to = NULL;
Zbigniew Jędrzejewski-Szmek a59965
+        _cleanup_lookup_paths_free_ LookupPaths paths = {};
Zbigniew Jędrzejewski-Szmek a59965
+        _cleanup_free_ char *config_path = NULL;
Zbigniew Jędrzejewski-Szmek a59965
+        char **i;
Zbigniew Jędrzejewski-Szmek a59965
         int r, q;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         assert(scope >= 0);
Zbigniew Jędrzejewski-Szmek a59965
@@ -1854,16 +1853,13 @@ int unit_file_preset(
Zbigniew Jędrzejewski-Szmek a59965
                         r = install_info_add_auto(&plus, *i);
Zbigniew Jędrzejewski-Szmek a59965
                 else
Zbigniew Jędrzejewski-Szmek a59965
                         r = install_info_add_auto(&minus, *i);
Zbigniew Jędrzejewski-Szmek a59965
-
Zbigniew Jędrzejewski-Szmek a59965
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek a59965
                         return r;
Zbigniew Jędrzejewski-Szmek a59965
         }
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to,
Zbigniew Jędrzejewski-Szmek a59965
-                                             config_path, root_dir);
Zbigniew Jędrzejewski-Szmek a59965
+        r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to, config_path, root_dir);
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-        q = remove_marked_symlinks(remove_symlinks_to, config_path,
Zbigniew Jędrzejewski-Szmek a59965
-                                   changes, n_changes, files);
Zbigniew Jędrzejewski-Szmek a59965
+        q = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files);
Zbigniew Jędrzejewski-Szmek a59965
         if (r == 0)
Zbigniew Jędrzejewski-Szmek a59965
                 r = q;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
@@ -1891,8 +1887,6 @@ int unit_file_get_list(
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         _cleanup_lookup_paths_free_ LookupPaths paths = {};
Zbigniew Jędrzejewski-Szmek a59965
         char **i;
Zbigniew Jędrzejewski-Szmek a59965
-        _cleanup_free_ char *buf = NULL;
Zbigniew Jędrzejewski-Szmek a59965
-        _cleanup_closedir_ DIR *d = NULL;
Zbigniew Jędrzejewski-Szmek a59965
         int r;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         assert(scope >= 0);
Zbigniew Jędrzejewski-Szmek a59965
@@ -1907,22 +1901,19 @@ int unit_file_get_list(
Zbigniew Jędrzejewski-Szmek a59965
                 return r;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
         STRV_FOREACH(i, paths.unit_path) {
Zbigniew Jędrzejewski-Szmek a59965
+                _cleanup_closedir_ DIR *d = NULL;
Zbigniew Jędrzejewski-Szmek a59965
+                _cleanup_free_ char *buf = NULL;
Zbigniew Jędrzejewski-Szmek a59965
                 const char *units_dir;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-                free(buf);
Zbigniew Jędrzejewski-Szmek a59965
-                buf = NULL;
Zbigniew Jędrzejewski-Szmek a59965
-
Zbigniew Jędrzejewski-Szmek a59965
-                if (root_dir) {
Zbigniew Jędrzejewski-Szmek a59965
-                        if (asprintf(&buf, "%s/%s", root_dir, *i) < 0)
Zbigniew Jędrzejewski-Szmek a59965
+                if (!isempty(root_dir)) {
Zbigniew Jędrzejewski-Szmek a59965
+                        buf = strjoin(root_dir, "/", *i, NULL);
Zbigniew Jędrzejewski-Szmek a59965
+                        if (!buf)
Zbigniew Jędrzejewski-Szmek a59965
                                 return -ENOMEM;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
                         units_dir = buf;
Zbigniew Jędrzejewski-Szmek a59965
                 } else
Zbigniew Jędrzejewski-Szmek a59965
                         units_dir = *i;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-                if (d)
Zbigniew Jędrzejewski-Szmek a59965
-                        closedir(d);
Zbigniew Jędrzejewski-Szmek a59965
-
Zbigniew Jędrzejewski-Szmek a59965
                 d = opendir(units_dir);
Zbigniew Jędrzejewski-Szmek a59965
                 if (!d) {
Zbigniew Jędrzejewski-Szmek a59965
                         if (errno == ENOENT)
Zbigniew Jędrzejewski-Szmek a59965
@@ -1953,15 +1944,9 @@ int unit_file_get_list(
Zbigniew Jędrzejewski-Szmek a59965
                         if (hashmap_get(h, de->d_name))
Zbigniew Jędrzejewski-Szmek a59965
                                 continue;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-                        r = dirent_ensure_type(d, de);
Zbigniew Jędrzejewski-Szmek a59965
-                        if (r < 0) {
Zbigniew Jędrzejewski-Szmek a59965
-                                if (r == -ENOENT)
Zbigniew Jędrzejewski-Szmek a59965
-                                        continue;
Zbigniew Jędrzejewski-Szmek a59965
-
Zbigniew Jędrzejewski-Szmek a59965
-                                return r;
Zbigniew Jędrzejewski-Szmek a59965
-                        }
Zbigniew Jędrzejewski-Szmek a59965
+                        dirent_ensure_type(d, de);
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
-                        if (de->d_type != DT_LNK && de->d_type != DT_REG)
Zbigniew Jędrzejewski-Szmek a59965
+                        if (!IN_SET(de->d_type, DT_LNK, DT_REG))
Zbigniew Jędrzejewski-Szmek a59965
                                 continue;
Zbigniew Jędrzejewski-Szmek a59965
 
Zbigniew Jędrzejewski-Szmek a59965
                         f = new0(UnitFileList, 1);