lstat: Avoid "guessing no" when cross-compiling to glibc systems.
authorBruno Haible <bruno@clisp.org>
Fri, 4 May 2012 02:29:15 +0000 (04:29 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 4 May 2012 02:29:15 +0000 (04:29 +0200)
* m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): When cross-
compiling, set gl_cv_func_lstat_dereferences_slashed_symlink to
"guessing yes" or "guessing no".
(gl_FUNC_LSTAT): Update.
* m4/fstatat.m4 (gl_FUNC_FSTATAT): Update.
* m4/openat.m4 (gl_FUNC_OPENAT): Update.
* m4/unlinkat.m4 (gl_FUNC_UNLINKAT): Update.

ChangeLog
m4/fstatat.m4
m4/lstat.m4
m4/openat.m4
m4/unlinkat.m4

index c1c5ac2..ca2f6c4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2012-05-03  Bruno Haible  <bruno@clisp.org>
 
+       lstat: Avoid "guessing no" when cross-compiling to glibc systems.
+       * m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): When cross-
+       compiling, set gl_cv_func_lstat_dereferences_slashed_symlink to
+       "guessing yes" or "guessing no".
+       (gl_FUNC_LSTAT): Update.
+       * m4/fstatat.m4 (gl_FUNC_FSTATAT): Update.
+       * m4/openat.m4 (gl_FUNC_OPENAT): Update.
+       * m4/unlinkat.m4 (gl_FUNC_UNLINKAT): Update.
+
+2012-05-03  Bruno Haible  <bruno@clisp.org>
+
        *alloc-gnu, eealloc: Avoid "guessing no" when cross-compiling to glibc.
        * m4/malloc.m4 (_AC_FUNC_MALLOC_IF): Override in autoconf < 2.70.
        * m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Override in autoconf < 2.70.
index a688531..f84e198 100644 (file)
@@ -1,4 +1,4 @@
-# fstatat.m4 serial 2
+# fstatat.m4 serial 3
 dnl Copyright (C) 2004-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -45,7 +45,7 @@ AC_DEFUN([gl_FUNC_FSTATAT],
       ])
 
     case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in
-    *yes+yes) ;;
+    *yes+*yes) ;;
     *) REPLACE_FSTATAT=1
        case $gl_cv_func_fstatat_zero_flag in
        *yes)
index b83858b..b7335bd 100644 (file)
@@ -1,4 +1,4 @@
-# serial 24
+# serial 25
 
 # Copyright (C) 1997-2001, 2003-2012 Free Software Foundation, Inc.
 #
@@ -16,9 +16,11 @@ AC_DEFUN([gl_FUNC_LSTAT],
   AC_CHECK_FUNCS_ONCE([lstat])
   if test $ac_cv_func_lstat = yes; then
     AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
-    if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then
-      REPLACE_LSTAT=1
-    fi
+    case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
+      *no)
+        REPLACE_LSTAT=1
+        ;;
+    esac
   else
     HAVE_LSTAT=0
   fi
@@ -51,20 +53,25 @@ AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
             ]])],
          [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
          [gl_cv_func_lstat_dereferences_slashed_symlink=no],
-         [# When cross-compiling, be pessimistic so we will end up using the
-          # replacement version of lstat that checks for trailing slashes and
-          # calls lstat a second time when necessary.
-          gl_cv_func_lstat_dereferences_slashed_symlink=no
+         [case "$host_os" in
+                    # Guess yes on glibc systems.
+            *-gnu*) gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
+                    # If we don't know, assume the worst.
+            *)      gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
+          esac
          ])
      else
        # If the 'ln -s' command failed, then we probably don't even
        # have an lstat function.
-       gl_cv_func_lstat_dereferences_slashed_symlink=no
+       gl_cv_func_lstat_dereferences_slashed_symlink="guessing no"
      fi
      rm -f conftest.sym conftest.file
     ])
-  test $gl_cv_func_lstat_dereferences_slashed_symlink = yes &&
-    AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
-      [Define to 1 if 'lstat' dereferences a symlink specified
-       with a trailing slash.])
+  case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
+    *yes)
+      AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
+        [Define to 1 if 'lstat' dereferences a symlink specified
+         with a trailing slash.])
+      ;;
+  esac
 ])
index 33281d2..0040040 100644 (file)
@@ -1,4 +1,4 @@
-# serial 43
+# serial 44
 # See if we need to use our replacement for Solaris' openat et al functions.
 
 dnl Copyright (C) 2004-2012 Free Software Foundation, Inc.
@@ -15,7 +15,7 @@ AC_DEFUN([gl_FUNC_OPENAT],
   AC_CHECK_FUNCS_ONCE([openat])
   AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
   case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in
-  yes+yes)
+  yes+*yes)
     ;;
   yes+*)
     # Solaris 9 has *at functions, but uniformly mishandles trailing
index cf735ba..fc10d59 100644 (file)
@@ -1,4 +1,4 @@
-# unlinkat.m4 serial 1
+# unlinkat.m4 serial 2
 dnl Copyright (C) 2004-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -16,15 +16,18 @@ AC_DEFUN([gl_FUNC_UNLINKAT],
   if test $ac_cv_func_unlinkat = no; then
     HAVE_UNLINKAT=0
   else
-    if test $gl_cv_func_lstat_dereferences_slashed_symlink != yes; then
-      # Solaris 9 has *at functions, but uniformly mishandles trailing
-      # slash in all of them.
-      REPLACE_UNLINKAT=1
-    else
-      # GNU/Hurd has unlinkat, but it has the same bug as unlink.
-      if test $REPLACE_UNLINK = 1; then
+    case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
+      *no)
+        # Solaris 9 has *at functions, but uniformly mishandles trailing
+        # slash in all of them.
         REPLACE_UNLINKAT=1
-      fi
-    fi
+        ;;
+      *)
+        # GNU/Hurd has unlinkat, but it has the same bug as unlink.
+        if test $REPLACE_UNLINK = 1; then
+          REPLACE_UNLINKAT=1
+        fi
+        ;;
+    esac
   fi
 ])