From: Bruno Haible <bruno@clisp.org>
Date: Sat, 31 Jul 2010 14:01:58 +0000 (+0200)
Subject: fchownat: Replace also when chown has the trailing slash bug.
X-Git-Tag: v0.1~3971
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=fae6c4abe3faab75e892e19a0d60e681e442e453;p=gnulib.git

fchownat: Replace also when chown has the trailing slash bug.
---

diff --git a/ChangeLog b/ChangeLog
index 5b10e411de..da0cc3ff33 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-31  Bruno Haible  <bruno@clisp.org>
+
+	fchownat: Replace also when chown has the trailing slash bug.
+	* m4/openat.m4 (gl_FUNC_FCHOWNAT): Move the test of REPLACE_CHOWN
+	outside the gl_FUNC_FCHOWNAT_DEREF_BUG invocation. Fixes regression
+	introduced on 2010-04-10.
+	Reported by Rainer Tammer.
+
 2010-07-31  Bruno Haible  <bruno@clisp.org>
 
 	linkat: Work around AIX 7.1 bug.
diff --git a/m4/openat.m4 b/m4/openat.m4
index 80df704240..eec426a401 100644
--- a/m4/openat.m4
+++ b/m4/openat.m4
@@ -1,4 +1,4 @@
-# serial 29
+# serial 30
 # See if we need to use our replacement for Solaris' openat et al functions.
 
 dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
@@ -99,19 +99,22 @@ main ()
 # If we have the fchownat function, and it has the bug (in glibc-2.4)
 # that it dereferences symlinks even with AT_SYMLINK_NOFOLLOW, then
 # use the replacement function.
+# Also if the fchownat function, like chown, has the trailing slash bug,
+# use the replacement function.
 # Also use the replacement function if fchownat is simply not available.
 AC_DEFUN([gl_FUNC_FCHOWNAT],
 [
   AC_REQUIRE([gl_FUNC_CHOWN])
   AC_CHECK_FUNC([fchownat],
-    [gl_FUNC_FCHOWNAT_DEREF_BUG([
-      REPLACE_FCHOWNAT=1
-      AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1],
-                [Define to 1 if your platform has fchownat, but it cannot
-                 perform lchown tasks.])
-      if test $REPLACE_CHOWN = 1; then
-        REPLACE_FCHOWNAT=1
-      fi])],
+    [gl_FUNC_FCHOWNAT_DEREF_BUG(
+       [REPLACE_FCHOWNAT=1
+        AC_DEFINE([FCHOWNAT_NOFOLLOW_BUG], [1],
+                  [Define to 1 if your platform has fchownat, but it cannot
+                   perform lchown tasks.])
+       ])
+     if test $REPLACE_CHOWN = 1; then
+       REPLACE_FCHOWNAT=1
+     fi],
     [HAVE_FCHOWNAT=0])
   if test $HAVE_FCHOWNAT = 0 || test $REPLACE_FCHOWNAT = 1; then
     AC_LIBOBJ([fchownat])