Update Gnulib to the latest git version
[deliverable/binutils-gdb.git] / gnulib / import / m4 / lstat.m4
CommitLineData
c0c3707f 1# serial 33
f45c62c4 2
c0c3707f 3# Copyright (C) 1997-2001, 2003-2019 Free Software Foundation, Inc.
f45c62c4
YQ
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[
c0c3707f 13 AC_REQUIRE([AC_CANONICAL_HOST])
f45c62c4
YQ
14 AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
15 dnl If lstat does not exist, the replacement <sys/stat.h> does
16 dnl "#define lstat stat", and lstat.c is a no-op.
17 AC_CHECK_FUNCS_ONCE([lstat])
18 if test $ac_cv_func_lstat = yes; then
19 AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
c0c3707f
CB
20 case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in
21 solaris* | *no)
f45c62c4
YQ
22 REPLACE_LSTAT=1
23 ;;
24 esac
25 else
26 HAVE_LSTAT=0
27 fi
28])
29
30# Prerequisites of lib/lstat.c.
31AC_DEFUN([gl_PREREQ_LSTAT], [:])
32
33AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
34[
35 dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it
36 dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ.
c0c3707f 37 AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
f45c62c4
YQ
38 AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
39 [gl_cv_func_lstat_dereferences_slashed_symlink],
40 [rm -f conftest.sym conftest.file
41 echo >conftest.file
4a626d0a
PA
42 AC_RUN_IFELSE(
43 [AC_LANG_PROGRAM(
44 [AC_INCLUDES_DEFAULT],
45 [[struct stat sbuf;
46 if (symlink ("conftest.file", "conftest.sym") != 0)
47 return 1;
48 /* Linux will dereference the symlink and fail, as required by
49 POSIX. That is better in the sense that it means we will not
50 have to compile and use the lstat wrapper. */
51 return lstat ("conftest.sym/", &sbuf) == 0;
52 ]])],
53 [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
54 [gl_cv_func_lstat_dereferences_slashed_symlink=no],
55 [case "$host_os" in
c0c3707f
CB
56 linux-* | linux)
57 # Guess yes on Linux systems.
58 gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
59 *-gnu* | gnu*)
4a626d0a
PA
60 # Guess yes on glibc systems.
61 gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
c0c3707f
CB
62 mingw*)
63 # Guess no on native Windows.
4a626d0a 64 gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
c0c3707f
CB
65 *)
66 # If we don't know, obey --enable-cross-guesses.
67 gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;;
4a626d0a
PA
68 esac
69 ])
f45c62c4
YQ
70 rm -f conftest.sym conftest.file
71 ])
72 case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
73 *yes)
74 AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
75 [Define to 1 if 'lstat' dereferences a symlink specified
76 with a trailing slash.])
77 ;;
78 esac
79])
This page took 0.40655 seconds and 4 git commands to generate.