Blame m4/lstat.m4

Packit Service 4684c1
# serial 33
Packit Service 4684c1
Packit Service 4684c1
# Copyright (C) 1997-2001, 2003-2020 Free Software Foundation, Inc.
Packit Service 4684c1
#
Packit Service 4684c1
# This file is free software; the Free Software Foundation
Packit Service 4684c1
# gives unlimited permission to copy and/or distribute it,
Packit Service 4684c1
# with or without modifications, as long as this notice is preserved.
Packit Service 4684c1
Packit Service 4684c1
dnl From Jim Meyering.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_FUNC_LSTAT],
Packit Service 4684c1
[
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST])
Packit Service 4684c1
  AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
Packit Service 4684c1
  dnl If lstat does not exist, the replacement <sys/stat.h> does
Packit Service 4684c1
  dnl "#define lstat stat", and lstat.c is a no-op.
Packit Service 4684c1
  AC_CHECK_FUNCS_ONCE([lstat])
Packit Service 4684c1
  if test $ac_cv_func_lstat = yes; then
Packit Service 4684c1
    AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
Packit Service 4684c1
    case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in
Packit Service 4684c1
      solaris* | *no)
Packit Service 4684c1
        REPLACE_LSTAT=1
Packit Service 4684c1
        ;;
Packit Service 4684c1
    esac
Packit Service 4684c1
  else
Packit Service 4684c1
    HAVE_LSTAT=0
Packit Service 4684c1
  fi
Packit Service 4684c1
])
Packit Service 4684c1
Packit Service 4684c1
# Prerequisites of lib/lstat.c.
Packit Service 4684c1
AC_DEFUN([gl_PREREQ_LSTAT], [:])
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
Packit Service 4684c1
[
Packit Service 4684c1
  dnl We don't use AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK any more, because it
Packit Service 4684c1
  dnl is no longer maintained in Autoconf and because it invokes AC_LIBOBJ.
Packit Service 4684c1
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 4684c1
  AC_CACHE_CHECK([whether lstat correctly handles trailing slash],
Packit Service 4684c1
    [gl_cv_func_lstat_dereferences_slashed_symlink],
Packit Service 4684c1
    [rm -f conftest.sym conftest.file
Packit Service 4684c1
     echo >conftest.file
Packit Service 4684c1
     AC_RUN_IFELSE(
Packit Service 4684c1
       [AC_LANG_PROGRAM(
Packit Service 4684c1
          [AC_INCLUDES_DEFAULT],
Packit Service 4684c1
          [[struct stat sbuf;
Packit Service 4684c1
            if (symlink ("conftest.file", "conftest.sym") != 0)
Packit Service 4684c1
              return 1;
Packit Service 4684c1
            /* Linux will dereference the symlink and fail, as required by
Packit Service 4684c1
               POSIX.  That is better in the sense that it means we will not
Packit Service 4684c1
               have to compile and use the lstat wrapper.  */
Packit Service 4684c1
            return lstat ("conftest.sym/", &sbuf) == 0;
Packit Service 4684c1
          ]])],
Packit Service 4684c1
       [gl_cv_func_lstat_dereferences_slashed_symlink=yes],
Packit Service 4684c1
       [gl_cv_func_lstat_dereferences_slashed_symlink=no],
Packit Service 4684c1
       [case "$host_os" in
Packit Service 4684c1
          linux-* | linux)
Packit Service 4684c1
            # Guess yes on Linux systems.
Packit Service 4684c1
            gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
Packit Service 4684c1
          *-gnu* | gnu*)
Packit Service 4684c1
            # Guess yes on glibc systems.
Packit Service 4684c1
            gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
Packit Service 4684c1
          mingw*)
Packit Service 4684c1
            # Guess no on native Windows.
Packit Service 4684c1
            gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;;
Packit Service 4684c1
          *)
Packit Service 4684c1
            # If we don't know, obey --enable-cross-guesses.
Packit Service 4684c1
            gl_cv_func_lstat_dereferences_slashed_symlink="$gl_cross_guess_normal" ;;
Packit Service 4684c1
        esac
Packit Service 4684c1
       ])
Packit Service 4684c1
     rm -f conftest.sym conftest.file
Packit Service 4684c1
    ])
Packit Service 4684c1
  case "$gl_cv_func_lstat_dereferences_slashed_symlink" in
Packit Service 4684c1
    *yes)
Packit Service 4684c1
      AC_DEFINE_UNQUOTED([LSTAT_FOLLOWS_SLASHED_SYMLINK], [1],
Packit Service 4684c1
        [Define to 1 if 'lstat' dereferences a symlink specified
Packit Service 4684c1
         with a trailing slash.])
Packit Service 4684c1
      ;;
Packit Service 4684c1
  esac
Packit Service 4684c1
])