From: Wayne Davison Date: Thu, 31 Dec 2009 22:10:38 +0000 (-0800) Subject: Always use lchmod() if it is available. X-Git-Tag: v3.0.8pre1~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5de3fe19b6753d037b8395c3b50473805023f2d5;p=thirdparty%2Frsync.git Always use lchmod() if it is available. --- diff --git a/syscall.c b/syscall.c index cfabc3eb..ef182d40 100644 --- a/syscall.c +++ b/syscall.c @@ -152,10 +152,11 @@ int do_chmod(const char *path, mode_t mode) int code; if (dry_run) return 0; RETURN_ERROR_IF_RO_OR_LO; - if (S_ISLNK(mode)) { #ifdef HAVE_LCHMOD - code = lchmod(path, mode & CHMOD_BITS); -#elif defined HAVE_SETATTRLIST + code = lchmod(path, mode & CHMOD_BITS); +#else + if (S_ISLNK(mode)) { +# if defined HAVE_SETATTRLIST struct attrlist attrList; uint32_t m = mode & CHMOD_BITS; /* manpage is wrong: not mode_t! */ @@ -163,11 +164,12 @@ int do_chmod(const char *path, mode_t mode) attrList.bitmapcount = ATTR_BIT_MAP_COUNT; attrList.commonattr = ATTR_CMN_ACCESSMASK; code = setattrlist(path, &attrList, &m, sizeof m, FSOPT_NOFOLLOW); -#else +# else code = 1; -#endif +# endif } else code = chmod(path, mode & CHMOD_BITS); /* DISCOURAGED FUNCTION */ +#endif /* !HAVE_LCHMOD */ if (code != 0 && (preserve_perms || preserve_executability)) return code; return 0;