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 |
]) |
]) |