changeset 21231:2a5b4d896b14

Rewrite to set HAVE_STAT_EMPTY_STRING_BUG.
author Jim Meyering <jim@meyering.net>
date Sun, 08 Nov 1998 03:42:20 +0000
parents 74232445220a
children 22e215f4496b
files m4/stat.m4
diffstat 1 files changed, 29 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/m4/stat.m4	Sun Nov 08 03:40:04 1998 +0000
+++ b/m4/stat.m4	Sun Nov 08 03:42:20 1998 +0000
@@ -1,20 +1,18 @@
-#serial 1
+#serial 2
 
 dnl From Jim Meyering.
-dnl Determine whether stat has the bug that it succeeds when given the
-dnl zero-length file name argument.  The stat from SunOS4.1.4 does this.
-dnl
-dnl If it doesn't, arrange to use the replacement function.
+dnl Determine whether stat has the `bug' that it succeeds when given the
+dnl zero-length file name argument.  The stat from SunOS4.1.4 and the Hurd
+dnl (as of 1998-11-01) does this.  This behavior is allowed by POSIX.
 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_stat if the replacement function should be used.  */
-dnl  #undef stat
+dnl If it does, then define HAVE_STAT_EMPTY_STRING_BUG and arrange to
+dnl compile the wrapper function.
 dnl
 
 AC_DEFUN(jm_FUNC_STAT,
 [
- AC_CACHE_CHECK([for working stat], jm_cv_func_working_stat,
+ AC_CACHE_CHECK([whether stat accepts an empty string],
+  jm_cv_func_stat_empty_string_bug,
   [AC_TRY_RUN([
 #   include <sys/types.h>
 #   include <sys/stat.h>
@@ -23,16 +21,31 @@
     main ()
     {
       struct stat sbuf;
-      exit (stat ("", &sbuf) == 0 ? 1 : 0);
+      exit (stat ("", &sbuf) ? 1 : 0);
     }
 	  ],
-	 jm_cv_func_working_stat=yes,
-	 jm_cv_func_working_stat=no,
+	 jm_cv_func_stat_empty_string_bug=yes,
+	 jm_cv_func_stat_empty_string_bug=no,
 	 dnl When crosscompiling, assume stat is broken.
-	 jm_cv_func_working_stat=no)
+	 jm_cv_func_stat_empty_string_bug=yes)
   ])
-  if test $jm_cv_func_working_stat = no; then
+  if test $jm_cv_func_stat_empty_string_bug = yes; then
+
     LIBOBJS="$LIBOBJS stat.o"
-    AC_DEFINE_UNQUOTED(stat, rpl_stat)
+
+    if test $jm_cv_func_stat_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(STAT_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_STAT_EMPTY_STRING_BUG
+      AC_DEFINE_UNQUOTED($ac_kludge)
+    fi
   fi
 ])