chiark / gitweb /
Add type specifier for int
[elogind.git] / src / shared / switch-root.c
index c5b635d17d8efe537f5fba319163380bde84ae18..813641ad44da59b7c0969c89adc192a40623aceb 100644 (file)
@@ -51,15 +51,13 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
         if (path_equal(new_root, "/"))
                 return 0;
 
-        temporary_old_root = strappenda(new_root, oldroot);
+        temporary_old_root = strjoina(new_root, oldroot);
         mkdir_p_label(temporary_old_root, 0755);
 
         old_root_remove = in_initrd();
 
-        if (stat(new_root, &new_root_stat) < 0) {
-                log_error_errno(errno, "Failed to stat directory %s: %m", new_root);
-                return -errno;
-        }
+        if (stat(new_root, &new_root_stat) < 0)
+                return log_error_errno(errno, "Failed to stat directory %s: %m", new_root);
 
         /* Work-around for kernel design: the kernel refuses switching
          * root if any file systems are mounted MS_SHARED. Hence
@@ -74,7 +72,6 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
                 struct stat sb;
 
                 snprintf(new_mount, sizeof(new_mount), "%s%s", new_root, i);
-                char_array_0(new_mount);
 
                 mkdir_p_label(new_mount, 0755);
 
@@ -109,10 +106,8 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
          * switch_root() nevertheless. */
         (void) base_filesystem_create(new_root);
 
-        if (chdir(new_root) < 0) {
-                log_error_errno(errno, "Failed to change directory to %s: %m", new_root);
-                return -errno;
-        }
+        if (chdir(new_root) < 0)
+                return log_error_errno(errno, "Failed to change directory to %s: %m", new_root);
 
         if (old_root_remove) {
                 old_root_fd = open("/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_NOCTTY|O_DIRECTORY);
@@ -132,20 +127,14 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
                                   oldroot,
                                   errno == ENOENT ? "ignoring" : "leaving it around");
 
-        } else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0) {
-                log_error_errno(errno, "Failed to mount moving %s to /: %m", new_root);
-                return -errno;
-        }
+        } else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0)
+                return log_error_errno(errno, "Failed to mount moving %s to /: %m", new_root);
 
-        if (chroot(".") < 0) {
-                log_error_errno(errno, "Failed to change root: %m");
-                return -errno;
-        }
+        if (chroot(".") < 0)
+                return log_error_errno(errno, "Failed to change root: %m");
 
-        if (chdir("/") < 0) {
-                log_error_errno(errno, "Failed to change directory: %m");
-                return -errno;
-        }
+        if (chdir("/") < 0)
+                return log_error_errno(errno, "Failed to change directory: %m");
 
         if (old_root_fd >= 0) {
                 struct stat rb;