|
version 1.1.1.1, 2012/05/29 09:29:44
|
version 1.1.1.2, 2021/03/17 13:38:46
|
|
Line 1
|
Line 1
|
| # serial 23 | # serial 32 |
| |
|
| # Copyright (C) 1997-2001, 2003-2011 Free Software Foundation, Inc. | # Copyright (C) 1997-2001, 2003-2019 Free Software Foundation, Inc. |
| # |
# |
| # This file is free software; the Free Software Foundation |
# This file is free software; the Free Software Foundation |
| # gives unlimited permission to copy and/or distribute it, |
# gives unlimited permission to copy and/or distribute it, |
|
Line 10 dnl From Jim Meyering.
|
Line 10 dnl From Jim Meyering.
|
| |
|
| AC_DEFUN([gl_FUNC_LSTAT], |
AC_DEFUN([gl_FUNC_LSTAT], |
| [ |
[ |
| |
AC_REQUIRE([AC_CANONICAL_HOST]) |
| AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) |
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) |
| dnl If lstat does not exist, the replacement <sys/stat.h> does |
dnl If lstat does not exist, the replacement <sys/stat.h> does |
| dnl "#define lstat stat", and lstat.c is a no-op. |
dnl "#define lstat stat", and lstat.c is a no-op. |
| AC_CHECK_FUNCS_ONCE([lstat]) |
AC_CHECK_FUNCS_ONCE([lstat]) |
| if test $ac_cv_func_lstat = yes; then |
if test $ac_cv_func_lstat = yes; then |
| AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) |
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) |
| if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then | case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in |
| REPLACE_LSTAT=1 | solaris* | *no) |
| fi | REPLACE_LSTAT=1 |
| | ;; |
| | esac |
| else |
else |
| HAVE_LSTAT=0 |
HAVE_LSTAT=0 |
| fi |
fi |
| ]) |
]) |
| |
|
| # Prerequisites of lib/lstat.c. |
# Prerequisites of lib/lstat.c. |
| AC_DEFUN([gl_PREREQ_LSTAT], | AC_DEFUN([gl_PREREQ_LSTAT], [:]) |
| [ | |
| AC_REQUIRE([AC_C_INLINE]) | |
| : | |
| ]) | |
| |
|
| AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], |
AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], |
| [ |
[ |
| dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it |
dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it |
| dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ. |
dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ. |
| |
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
| AC_CACHE_CHECK([whether lstat correctly handles trailing slash], |
AC_CACHE_CHECK([whether lstat correctly handles trailing slash], |
| [gl_cv_func_lstat_dereferences_slashed_symlink], |
[gl_cv_func_lstat_dereferences_slashed_symlink], |
| [rm -f conftest.sym conftest.file |
[rm -f conftest.sym conftest.file |
| echo >conftest.file |
echo >conftest.file |
| if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then | AC_RUN_IFELSE( |
| AC_RUN_IFELSE( | [AC_LANG_PROGRAM( |
| [AC_LANG_PROGRAM( | [AC_INCLUDES_DEFAULT], |
| [AC_INCLUDES_DEFAULT], | [[struct stat sbuf; |
| [[struct stat sbuf; | if (symlink ("conftest.file", "conftest.sym") != 0) |
| /* Linux will dereference the symlink and fail, as required by | return 1; |
| POSIX. That is better in the sense that it means we will not | /* Linux will dereference the symlink and fail, as required by |
| have to compile and use the lstat wrapper. */ | POSIX. That is better in the sense that it means we will not |
| return lstat ("conftest.sym/", &sbuf) == 0; | 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], | [gl_cv_func_lstat_dereferences_slashed_symlink=yes], |
| [# When cross-compiling, be pessimistic so we will end up using the | [gl_cv_func_lstat_dereferences_slashed_symlink=no], |
| # replacement version of lstat that checks for trailing slashes and | [case "$host_os" in |
| # calls lstat a second time when necessary. | linux-* | linux) |
| gl_cv_func_lstat_dereferences_slashed_symlink=no | # Guess yes on Linux systems. |
| ]) | gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; |
| else | *-gnu* | gnu*) |
| # If the 'ln -s' command failed, then we probably don't even | # Guess yes on glibc systems. |
| # have an lstat function. | gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; |
| gl_cv_func_lstat_dereferences_slashed_symlink=no | mingw*) |
| fi | # Guess no on native Windows. |
| | gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; |
| | *) |
| | # If we don't know, assume the worst. |
| | gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; |
| | esac |
| | ]) |
| rm -f conftest.sym conftest.file |
rm -f conftest.sym conftest.file |
| ]) |
]) |
| test $gl_cv_func_lstat_dereferences_slashed_symlink = yes && | case "$gl_cv_func_lstat_dereferences_slashed_symlink" in |
| AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], | *yes) |
| [Define to 1 if `lstat' dereferences a symlink specified | AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1], |
| with a trailing slash.]) | [Define to 1 if 'lstat' dereferences a symlink specified |
| | with a trailing slash.]) |
| | ;; |
| | esac |
| ]) |
]) |