(addext): Protoize.
[gnulib.git] / m4 / lstat.m4
index bb2f754..3b7bdfb 100644 (file)
@@ -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 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 zero-length file name argument.  The lstat from SunOS4.1.4 and the Hurd
+dnl (as of 1998-11-01) do this.
 dnl
 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,
 [
 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>
   [AC_TRY_RUN([
 #   include <sys/types.h>
 #   include <sys/stat.h>
@@ -23,16 +21,31 @@ AC_DEFUN(jm_FUNC_LSTAT,
     main ()
     {
       struct stat sbuf;
     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.
         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"
     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
 ])
   fi
 ])