Merge remote-tracking branch 'origin/stable-2.0'
[bpt/guile.git] / m4 / lstat.m4
CommitLineData
f0007cad 1# serial 24
8912421c 2
f0007cad 3# Copyright (C) 1997-2001, 2003-2012 Free Software Foundation, Inc.
8912421c
LC
4#
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.
8
9dnl From Jim Meyering.
10
11AC_DEFUN([gl_FUNC_LSTAT],
12[
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
231c0e0e 18 AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
3d458a81 19 if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then
8912421c
LC
20 REPLACE_LSTAT=1
21 fi
8912421c
LC
22 else
23 HAVE_LSTAT=0
24 fi
25])
0f00f2c3 26
3d458a81
AW
27# Prerequisites of lib/lstat.c.
28AC_DEFUN([gl_PREREQ_LSTAT],
0f00f2c3 29[
3d458a81
AW
30 AC_REQUIRE([AC_C_INLINE])
31 :
32])
33
34AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
35[
36 dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it
37 dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ.
0f00f2c3 38 AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
3d458a81 39 [gl_cv_func_lstat_dereferences_slashed_symlink],
0f00f2c3
LC
40 [rm -f conftest.sym conftest.file
41 echo >conftest.file
42 if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then
43 AC_RUN_IFELSE(
44 [AC_LANG_PROGRAM(
45 [AC_INCLUDES_DEFAULT],
46 [[struct stat sbuf;
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;
51 ]])],
3d458a81
AW
52 [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
53 [gl_cv_func_lstat_dereferences_slashed_symlink=no],
0f00f2c3
LC
54 [# When cross-compiling, be pessimistic so we will end up using the
55 # replacement version of lstat that checks for trailing slashes and
56 # calls lstat a second time when necessary.
3d458a81 57 gl_cv_func_lstat_dereferences_slashed_symlink=no
0f00f2c3
LC
58 ])
59 else
60 # If the 'ln -s' command failed, then we probably don't even
61 # have an lstat function.
3d458a81 62 gl_cv_func_lstat_dereferences_slashed_symlink=no
0f00f2c3
LC
63 fi
64 rm -f conftest.sym conftest.file
65 ])
3d458a81 66 test $gl_cv_func_lstat_dereferences_slashed_symlink = yes &&
0f00f2c3 67 AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
f0007cad 68 [Define to 1 if 'lstat' dereferences a symlink specified
0f00f2c3 69 with a trailing slash.])
0f00f2c3 70])