summaryrefslogtreecommitdiffstats
path: root/source/n/rsync.nolchmod.diff
blob: 9fc90dd3ab9b529d5c5b54a7c5a0b3d77d76b82f (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--- ./rsync-3.2.3/syscall.c.orig	2020-07-27 18:36:55.000000000 -0500
+++ ./rsync-3.2.3/syscall.c	2021-02-22 14:28:02.306029758 -0600
@@ -232,7 +232,8 @@
 	RETURN_ERROR_IF_RO_OR_LO;
 #ifdef HAVE_LCHMOD
 	code = lchmod(path, mode & CHMOD_BITS);
-#else
+	if (code < 0 && errno == ENOTSUP) {
+#endif
 	if (S_ISLNK(mode)) {
 # if defined HAVE_SETATTRLIST
 		struct attrlist attrList;
@@ -247,6 +248,8 @@
 # endif
 	} else
 		code = chmod(path, mode & CHMOD_BITS); /* DISCOURAGED FUNCTION */
+#ifdef HAVE_LCHMOD
+	}
 #endif /* !HAVE_LCHMOD */
 	if (code != 0 && (preserve_perms || preserve_executability))
 		return code;