diff --git a/configure.ac b/configure.ac index 4062651d..3debbe01 100644 --- a/configure.ac +++ b/configure.ac @@ -887,7 +887,7 @@ dnl AC_FUNC_MEMCMP AC_FUNC_UTIME_NULL AC_FUNC_ALLOCA AC_CHECK_FUNCS(waitpid wait4 getcwd chown chmod lchmod mknod mkfifo \ - fchmod fstat ftruncate strchr readlink link utime utimes lutimes strftime \ + fchmod fchmodat fstat ftruncate strchr readlink link utime utimes lutimes strftime \ chflags getattrlist mktime innetgr linkat \ memmove lchown vsnprintf snprintf vasprintf asprintf setsid strpbrk \ strlcat strlcpy stpcpy strtol mallinfo mallinfo2 getgroups setgroups geteuid getegid \ diff --git a/syscall.c b/syscall.c index e317bccc..f3a60e28 100644 --- a/syscall.c +++ b/syscall.c @@ -788,6 +788,8 @@ int do_chmod(const char *path, mode_t mode) break; if (errno == ENOTSUP) code = 1; +# elif defined HAVE_FCHMODAT + code = fchmodat(AT_FDCWD, path, mode & CHMOD_BITS, AT_SYMLINK_NOFOLLOW); # else code = 1; # endif