3 # Copyright (C) 1997-2001, 2003-2017 Free Software Foundation, Inc.
5 # This file is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
11 AC_DEFUN([gl_FUNC_LSTAT],
13 AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
14 dnl If lstat does not exist, the replacement <sys/stat.h> does
15 dnl "#define lstat stat", and lstat.c is a no-op.
16 AC_CHECK_FUNCS_ONCE([lstat])
17 if test $ac_cv_func_lstat = yes; then
18 AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
19 case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
29 # Prerequisites of lib/lstat.c.
30 AC_DEFUN([gl_PREREQ_LSTAT], [:])
32 AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
34 dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it
35 dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ.
36 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
37 AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
38 [gl_cv_func_lstat_dereferences_slashed_symlink],
39 [rm -f conftest.sym conftest.file
43 [AC_INCLUDES_DEFAULT],
45 if (symlink ("conftest.file", "conftest.sym") != 0)
47 /* Linux will dereference the symlink and fail, as required by
48 POSIX. That is better in the sense that it means we will not
49 have to compile and use the lstat wrapper. */
50 return lstat ("conftest.sym/", &sbuf) == 0;
52 [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
53 [gl_cv_func_lstat_dereferences_slashed_symlink=no],
56 # Guess yes on glibc systems.
57 gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
59 # Guess no on native Windows.
60 gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
62 # If we don't know, assume the worst.
63 gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
66 rm -f conftest.sym conftest.file
68 case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
70 AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
71 [Define to 1 if 'lstat' dereferences a symlink specified
72 with a trailing slash.])