New upstream version 1.9
[debian/gzip] / m4 / stat.m4
1 # serial 14
2
3 # Copyright (C) 2009-2018 Free Software Foundation, Inc.
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
9 AC_DEFUN([gl_FUNC_STAT],
10 [
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* | 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       case $host_os in
60         dnl Solaris stat can return a negative tv_nsec.
61         solaris*)
62           REPLACE_FSTAT=1 ;;
63       esac
64       ;;
65   esac
66 ])
67
68 # Prerequisites of lib/stat.c and lib/stat-w32.c.
69 AC_DEFUN([gl_PREREQ_STAT], [
70   AC_REQUIRE([gl_HEADER_SYS_STAT_H])
71   :
72 ])