--- rsync-3.2.3/syscall.c~ 2020-07-28 01:36:55.000000000 +0200 +++ rsync-3.2.3/syscall.c 2020-11-06 17:26:04.220502740 +0100 @@ -232,7 +232,8 @@ int do_chmod(const char *path, mode_t mo 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 @@ int do_chmod(const char *path, mode_t mo # 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;