diff options
author | Jim Meyering <jim@meyering.net> | 1998-11-08 03:42:35 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1998-11-08 03:42:35 +0000 |
commit | ac7f057d987dee1bfedf155b441b0b1b340ae26f (patch) | |
tree | c9fdf9407b3eac0b7afc4f7a3b157772d9d97f7d | |
parent | 2daa912c5383df4907ebedcbde6829b3d2772d10 (diff) | |
download | coreutils-ac7f057d987dee1bfedf155b441b0b1b340ae26f.tar.xz |
Rewrite to set HAVE_LSTAT_EMPTY_STRING_BUG.
-rw-r--r-- | m4/lstat.m4 | 45 |
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 ]) |