From 42562649917058c3aff682741854ac12ffe72d20 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 31 Dec 2009 14:10:38 -0800 Subject: [PATCH] Always use lchmod() if it is available. --- syscall.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/syscall.c b/syscall.c index 945a11d4..aba0009d 100644 --- a/syscall.c +++ b/syscall.c @@ -195,10 +195,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! */ @@ -206,11 +207,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; -- 2.34.1