Blame gnulib/m4/stat.m4

Packit eba2e2
# serial 11
Packit eba2e2
Packit eba2e2
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
Packit eba2e2
#
Packit eba2e2
# This file is free software; the Free Software Foundation
Packit eba2e2
# gives unlimited permission to copy and/or distribute it,
Packit eba2e2
# with or without modifications, as long as this notice is preserved.
Packit eba2e2
Packit eba2e2
AC_DEFUN([gl_FUNC_STAT],
Packit eba2e2
[
Packit eba2e2
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit eba2e2
  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
Packit eba2e2
  AC_CHECK_FUNCS_ONCE([lstat])
Packit eba2e2
  dnl mingw is the only known platform where stat(".") and stat("./") differ
Packit eba2e2
  AC_CACHE_CHECK([whether stat handles trailing slashes on directories],
Packit eba2e2
      [gl_cv_func_stat_dir_slash],
Packit eba2e2
      [AC_RUN_IFELSE(
Packit eba2e2
         [AC_LANG_PROGRAM(
Packit eba2e2
           [[#include <sys/stat.h>
Packit eba2e2
]], [[struct stat st; return stat (".", &st) != stat ("./", &st);]])],
Packit eba2e2
         [gl_cv_func_stat_dir_slash=yes], [gl_cv_func_stat_dir_slash=no],
Packit eba2e2
         [case $host_os in
Packit eba2e2
            mingw*) gl_cv_func_stat_dir_slash="guessing no";;
Packit eba2e2
            *) gl_cv_func_stat_dir_slash="guessing yes";;
Packit eba2e2
          esac])])
Packit eba2e2
  dnl AIX 7.1, Solaris 9, mingw64 mistakenly succeed on stat("file/").
Packit eba2e2
  dnl (For mingw, this is due to a broken stat() override in libmingwex.a.)
Packit eba2e2
  dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/").
Packit eba2e2
  AC_CACHE_CHECK([whether stat handles trailing slashes on files],
Packit eba2e2
      [gl_cv_func_stat_file_slash],
Packit eba2e2
      [touch conftest.tmp
Packit eba2e2
       # Assume that if we have lstat, we can also check symlinks.
Packit eba2e2
       if test $ac_cv_func_lstat = yes; then
Packit eba2e2
         ln -s conftest.tmp conftest.lnk
Packit eba2e2
       fi
Packit eba2e2
       AC_RUN_IFELSE(
Packit eba2e2
         [AC_LANG_PROGRAM(
Packit eba2e2
           [[#include <sys/stat.h>
Packit eba2e2
]], [[int result = 0;
Packit eba2e2
      struct stat st;
Packit eba2e2
      if (!stat ("conftest.tmp/", &st))
Packit eba2e2
        result |= 1;
Packit eba2e2
#if HAVE_LSTAT
Packit eba2e2
      if (!stat ("conftest.lnk/", &st))
Packit eba2e2
        result |= 2;
Packit eba2e2
#endif
Packit eba2e2
      return result;
Packit eba2e2
           ]])],
Packit eba2e2
         [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no],
Packit eba2e2
         [case "$host_os" in
Packit eba2e2
                    # Guess yes on glibc systems.
Packit eba2e2
            *-gnu*) gl_cv_func_stat_file_slash="guessing yes" ;;
Packit eba2e2
                    # If we don't know, assume the worst.
Packit eba2e2
            *)      gl_cv_func_stat_file_slash="guessing no" ;;
Packit eba2e2
          esac
Packit eba2e2
         ])
Packit eba2e2
       rm -f conftest.tmp conftest.lnk])
Packit eba2e2
  case $gl_cv_func_stat_dir_slash in
Packit eba2e2
    *no) REPLACE_STAT=1
Packit eba2e2
      AC_DEFINE([REPLACE_FUNC_STAT_DIR], [1], [Define to 1 if stat needs
Packit eba2e2
        help when passed a directory name with a trailing slash]);;
Packit eba2e2
  esac
Packit eba2e2
  case $gl_cv_func_stat_file_slash in
Packit eba2e2
    *no) REPLACE_STAT=1
Packit eba2e2
      AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs
Packit eba2e2
        help when passed a file name with a trailing slash]);;
Packit eba2e2
  esac
Packit eba2e2
])
Packit eba2e2
Packit eba2e2
# Prerequisites of lib/stat.c.
Packit eba2e2
AC_DEFUN([gl_PREREQ_STAT], [:])