summaryrefslogtreecommitdiff
path: root/m4/lstat.m4
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1998-11-08 03:42:35 +0000
committerJim Meyering <jim@meyering.net>1998-11-08 03:42:35 +0000
commitac7f057d987dee1bfedf155b441b0b1b340ae26f (patch)
treec9fdf9407b3eac0b7afc4f7a3b157772d9d97f7d /m4/lstat.m4
parent2daa912c5383df4907ebedcbde6829b3d2772d10 (diff)
downloadcoreutils-ac7f057d987dee1bfedf155b441b0b1b340ae26f.tar.xz
Rewrite to set HAVE_LSTAT_EMPTY_STRING_BUG.
Diffstat (limited to 'm4/lstat.m4')
-rw-r--r--m4/lstat.m445
1 files changed, 29 insertions, 16 deletions
diff --git a/m4/lstat.m4 b/m4/lstat.m4
index bb2f75415..9ca2402a4 100644
--- a/m4/lstat.m4
+++ b/m4/lstat.m4
@@ -1,20 +1,18 @@
-#serial 1
+#serial 2
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 Determine whether lstat has the `bug' that it succeeds when given the
+dnl zero-length file name argument. The lstat from SunOS4.1.4 and the Hurd
+dnl (as of 1998-11-01) does this. This behavior is allowed by POSIX.
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 If it does, then define HAVE_LSTAT_EMPTY_STRING_BUG and arrange to
+dnl compile the wrapper function.
dnl
AC_DEFUN(jm_FUNC_LSTAT,
[
- AC_CACHE_CHECK([for working lstat], jm_cv_func_working_lstat,
+ AC_CACHE_CHECK([whether lstat accepts an empty string],
+ jm_cv_func_lstat_empty_string_bug,
[AC_TRY_RUN([
# include <sys/types.h>
# include <sys/stat.h>
@@ -23,16 +21,31 @@ AC_DEFUN(jm_FUNC_LSTAT,
main ()
{
struct stat sbuf;
- exit (lstat ("", &sbuf) == 0 ? 1 : 0);
+ exit (lstat ("", &sbuf) ? 1 : 0);
}
],
- jm_cv_func_working_lstat=yes,
- jm_cv_func_working_lstat=no,
+ jm_cv_func_lstat_empty_string_bug=yes,
+ jm_cv_func_lstat_empty_string_bug=no,
dnl When crosscompiling, assume lstat is broken.
- jm_cv_func_working_lstat=no)
+ jm_cv_func_lstat_empty_string_bug=yes)
])
- if test $jm_cv_func_working_lstat = no; then
+ if test $jm_cv_func_lstat_empty_string_bug = yes; then
+
LIBOBJS="$LIBOBJS lstat.o"
- AC_DEFINE_UNQUOTED(lstat, rpl_lstat)
+
+ if test $jm_cv_func_lstat_empty_string_bug = yes; then
+ if test x = y; then
+ # This code is deliberately never run via ./configure.
+ # FIXME: this is a hack to make autoheader put the corresponding
+ # HAVE_* undef for this symbol in config.h.in. This saves me the
+ # trouble of having to maintain the #undef in acconfig.h manually.
+ AC_CHECK_FUNCS(LSTAT_EMPTY_STRING_BUG)
+ fi
+ # Defining it this way (rather than via AC_DEFINE) short-circuits the
+ # autoheader check -- autoheader doesn't know it's already been taken
+ # care of by the hack above.
+ ac_kludge=HAVE_LSTAT_EMPTY_STRING_BUG
+ AC_DEFINE_UNQUOTED($ac_kludge)
+ fi
fi
])