]> Savannah Git Hosting - gnulib.git/commitdiff
lstat: fix cross-compilation 'ln -s' problem
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Apr 2015 07:22:00 +0000 (00:22 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 21 Apr 2015 07:23:05 +0000 (00:23 -0700)
* m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK):
Have the test program call 'symlink' rather than a separate
script run 'ln -s'; this is more likely to work in
cross-compilation environments.  Reported by Pavel Fedin in:
http://lists.gnu.org/archive/html/bug-gnulib/2015-04/msg00060.html

ChangeLog
m4/lstat.m4

index 441758733c7cf4319e800ec92f743a7b172bcc63..2d3931ae1f02df64b3aecd4e535cc9eaeed7f87a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-04-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       lstat: fix cross-compilation 'ln -s' problem
+       * m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK):
+       Have the test program call 'symlink' rather than a separate
+       script run 'ln -s'; this is more likely to work in
+       cross-compilation environments.  Reported by Pavel Fedin in:
+       http://lists.gnu.org/archive/html/bug-gnulib/2015-04/msg00060.html
+
 2015-04-16  Ludovic Courtès  <ludo@gnu.org>
 
        gendocs.sh: default to a common CSS style sheet for HTML output
index f6c7dd1ce449b99c68d73cd87e51ec70a06665ed..adf752c0dfa188fdb25551778aca1aee54d154a6 100644 (file)
@@ -1,4 +1,4 @@
-# serial 26
+# serial 27
 
 # Copyright (C) 1997-2001, 2003-2015 Free Software Foundation, Inc.
 #
@@ -37,30 +37,28 @@ AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
     [gl_cv_func_lstat_dereferences_slashed_symlink],
     [rm -f conftest.sym conftest.file
      echo >conftest.file
-     if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
-       AC_RUN_IFELSE(
-         [AC_LANG_PROGRAM(
-            [AC_INCLUDES_DEFAULT],
-            [[struct stat sbuf;
-              /* Linux will dereference the symlink and fail, as required by
-                 POSIX.  That is better in the sense that it means we will not
-                 have to compile and use the lstat wrapper.  */
-              return lstat ("conftest.sym/", &sbuf) == 0;
-            ]])],
-         [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
-         [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="guessing no"
-     fi
+     AC_RUN_IFELSE(
+       [AC_LANG_PROGRAM(
+          [AC_INCLUDES_DEFAULT],
+          [[struct stat sbuf;
+            if (symlink ("conftest.file", "conftest.sym") != 0)
+              return 1;
+            /* Linux will dereference the symlink and fail, as required by
+               POSIX.  That is better in the sense that it means we will not
+               have to compile and use the lstat wrapper.  */
+            return lstat ("conftest.sym/", &sbuf) == 0;
+          ]])],
+       [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
+       [gl_cv_func_lstat_dereferences_slashed_symlink=no],
+       [case "$host_os" in
+          *-gnu*)
+            # Guess yes on glibc systems.
+            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
+       ])
      rm -f conftest.sym conftest.file
     ])
   case "$gl_cv_func_lstat_dereferences_slashed_symlink" in