-#serial 1
+# serial 20
+
+# Copyright (C) 1997-2001, 2003-2010 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
dnl From Jim Meyering.
-dnl Determine whether lstat has the bug that it succeeds when given the
-dnl zero-length file name argument. The lstat from SunOS4.1.4 does this.
-dnl
-dnl If it doesn't, arrange to use the replacement function.
-dnl
-dnl If you use this macro in a package, you should
-dnl add the following two lines to acconfig.h:
-dnl /* Define to rpl_lstat if the replacement function should be used. */
-dnl #undef lstat
-dnl
-AC_DEFUN(jm_FUNC_LSTAT,
+AC_DEFUN([gl_FUNC_LSTAT],
[
- AC_CACHE_CHECK([for working lstat], jm_cv_func_working_lstat,
- [AC_TRY_RUN([
-# include <sys/types.h>
-# include <sys/stat.h>
-
- int
- main ()
- {
- struct stat sbuf;
- exit (lstat ("", &sbuf) == 0 ? 1 : 0);
- }
- ],
- jm_cv_func_working_lstat=yes,
- jm_cv_func_working_lstat=no,
- dnl When crosscompiling, assume lstat is broken.
- jm_cv_func_working_lstat=no)
- ])
- if test $jm_cv_func_working_lstat = no; then
- LIBOBJS="$LIBOBJS lstat.o"
- AC_DEFINE_UNQUOTED(lstat, rpl_lstat)
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ dnl If lstat does not exist, the replacement <sys/stat.h> does
+ dnl "#define lstat stat", and lstat.c is a no-op.
+ AC_CHECK_FUNCS_ONCE([lstat])
+ if test $ac_cv_func_lstat = yes; then
+ AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+ if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then
+ dnl Note: AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK does AC_LIBOBJ([lstat]).
+ REPLACE_LSTAT=1
+ fi
+ # Prerequisites of lib/lstat.c.
+ AC_REQUIRE([AC_C_INLINE])
+ else
+ HAVE_LSTAT=0
fi
])