]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/install: do not print warning when a unit is already enabled
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 7 May 2016 21:02:55 +0000 (17:02 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 9 May 2016 19:17:57 +0000 (15:17 -0400)
Executing 'systemctl enable' on the same unit twice would cause
a warning about a missing [Install] section to be printed. To avoid
this, count all symlinks that "would" be created, and return 1
no matter if we actually created a symlink or skipped creation because
it already exists.

src/shared/install.c

index 4229e591402ae6412094cdd4b910160767373b65..88867c456eea410d72d1b37111c9c291ceaa4889 100644 (file)
@@ -389,8 +389,6 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang
                 log_error_errno(r, "Failed to %s: %m.", verb);
 }
 
-
-
 static int create_symlink(
                 const char *old_path,
                 const char *new_path,
@@ -406,7 +404,11 @@ static int create_symlink(
 
         /* Actually create a symlink, and remember that we did. Is
          * smart enough to check if there's already a valid symlink in
-         * place. */
+         * place.
+         *
+         * Returns 1 if a symlink was created or already exists and points to
+         * the right place, or negative on error.
+         */
 
         mkdir_parents_label(new_path, 0755);
 
@@ -431,7 +433,7 @@ static int create_symlink(
         }
 
         if (path_equal(dest, old_path))
-                return 0;
+                return 1;
 
         if (!force) {
                 unit_file_changes_add(changes, n_changes, -EEXIST, new_path, dest);