glob: merge from glibc with Zanella glob changes
[gnulib.git] / m4 / stat.m4
blob286fcba845e8f3c335925b071ca8723074a3efc4
1 # serial 12
3 # Copyright (C) 2009-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.
9 AC_DEFUN([gl_FUNC_STAT],
11   AC_REQUIRE([AC_CANONICAL_HOST])
12   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
13   AC_CHECK_FUNCS_ONCE([lstat])
14   case "$host_os" in
15     mingw*)
16       dnl On this platform, the original stat() returns st_atime, st_mtime,
17       dnl st_ctime values that are affected by the time zone.
18       REPLACE_STAT=1
19       ;;
20     *)
21       dnl AIX 7.1, Solaris 9, mingw64 mistakenly succeed on stat("file/").
22       dnl (For mingw, this is due to a broken stat() override in libmingwex.a.)
23       dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/").
24       AC_CACHE_CHECK([whether stat handles trailing slashes on files],
25         [gl_cv_func_stat_file_slash],
26         [touch conftest.tmp
27          # Assume that if we have lstat, we can also check symlinks.
28          if test $ac_cv_func_lstat = yes; then
29            ln -s conftest.tmp conftest.lnk
30          fi
31          AC_RUN_IFELSE(
32            [AC_LANG_PROGRAM(
33              [[#include <sys/stat.h>
34 ]], [[int result = 0;
35                struct stat st;
36                if (!stat ("conftest.tmp/", &st))
37                  result |= 1;
38 #if HAVE_LSTAT
39                if (!stat ("conftest.lnk/", &st))
40                  result |= 2;
41 #endif
42                return result;
43              ]])],
44            [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no],
45            [case "$host_os" in
46                       # Guess yes on glibc systems.
47               *-gnu*) gl_cv_func_stat_file_slash="guessing yes" ;;
48                       # If we don't know, assume the worst.
49               *)      gl_cv_func_stat_file_slash="guessing no" ;;
50             esac
51            ])
52          rm -f conftest.tmp conftest.lnk])
53       case $gl_cv_func_stat_file_slash in
54         *no)
55           REPLACE_STAT=1
56           AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs
57             help when passed a file name with a trailing slash]);;
58       esac
59       ;;
60   esac
63 # Prerequisites of lib/stat.c and lib/stat-w32.c.
64 AC_DEFUN([gl_PREREQ_STAT], [
65   AC_REQUIRE([gl_HEADER_SYS_STAT_H])
66   :