From: Zbigniew Jędrzejewski-Szmek Date: Sat, 7 May 2016 21:02:55 +0000 (-0400) Subject: shared/install: do not print warning when a unit is already enabled X-Git-Tag: v230~60^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8515830341a49a0af875333a1893a8aa41ee1099;p=thirdparty%2Fsystemd.git shared/install: do not print warning when a unit is already enabled 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. --- diff --git a/src/shared/install.c b/src/shared/install.c index 4229e591402..88867c456ee 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -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);