Rewrite to set HAVE_LSTAT_EMPTY_STRING_BUG.
[coreutils.git] / m4 / lstat.m4
blob9ca2402a40661d3028129ef77d8ed0d1e5a5460c
1 #serial 2
3 dnl From Jim Meyering.
4 dnl Determine whether lstat has the `bug' that it succeeds when given the
5 dnl zero-length file name argument.  The lstat from SunOS4.1.4 and the Hurd
6 dnl (as of 1998-11-01) does this.  This behavior is allowed by POSIX.
7 dnl
8 dnl If it does, then define HAVE_LSTAT_EMPTY_STRING_BUG and arrange to
9 dnl compile the wrapper function.
10 dnl
12 AC_DEFUN(jm_FUNC_LSTAT,
14  AC_CACHE_CHECK([whether lstat accepts an empty string],
15   jm_cv_func_lstat_empty_string_bug,
16   [AC_TRY_RUN([
17 #   include <sys/types.h>
18 #   include <sys/stat.h>
20     int
21     main ()
22     {
23       struct stat sbuf;
24       exit (lstat ("", &sbuf) ? 1 : 0);
25     }
26           ],
27          jm_cv_func_lstat_empty_string_bug=yes,
28          jm_cv_func_lstat_empty_string_bug=no,
29          dnl When crosscompiling, assume lstat is broken.
30          jm_cv_func_lstat_empty_string_bug=yes)
31   ])
32   if test $jm_cv_func_lstat_empty_string_bug = yes; then
34     LIBOBJS="$LIBOBJS lstat.o"
36     if test $jm_cv_func_lstat_empty_string_bug = yes; then
37       if test x = y; then
38         # This code is deliberately never run via ./configure.
39         # FIXME: this is a hack to make autoheader put the corresponding
40         # HAVE_* undef for this symbol in config.h.in.  This saves me the
41         # trouble of having to maintain the #undef in acconfig.h manually.
42         AC_CHECK_FUNCS(LSTAT_EMPTY_STRING_BUG)
43       fi
44       # Defining it this way (rather than via AC_DEFINE) short-circuits the
45       # autoheader check -- autoheader doesn't know it's already been taken
46       # care of by the hack above.
47       ac_kludge=HAVE_LSTAT_EMPTY_STRING_BUG
48       AC_DEFINE_UNQUOTED($ac_kludge)
49     fi
50   fi