X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Freaddir.m4;h=6087602c41ca5828d01ead8d8f21b742197835cd;hb=b6f4a765056b52c30e9b44ca0990f536dd0cb9de;hp=c73c15675dae3beae67acfc4c4b8edbf22389030;hpb=62928ecd47ba772e3650eb25f42e066467814e23;p=gnulib.git diff --git a/m4/readdir.m4 b/m4/readdir.m4 index c73c15675..6087602c4 100644 --- a/m4/readdir.m4 +++ b/m4/readdir.m4 @@ -1,8 +1,18 @@ -#serial 1 +#serial 4 -dnl FIXME: describe +dnl SunOS's readdir is broken in such a way that rm.c has to add extra code +dnl to test whether a NULL return value really means there are no more files +dnl in the directory. +dnl +dnl Detect the problem by creating a directory containing 300 files (254 not +dnl counting . and .. is the minimum) and see if a loop doing `readdir; unlink' +dnl removes all of them. +dnl +dnl Define HAVE_WORKING_READDIR if readdir does *not* have this problem. -AC_DEFUN(jm_FUNC_READDIR, +dnl Written by Jim Meyering. + +AC_DEFUN([jm_FUNC_READDIR], [dnl AC_REQUIRE([AC_HEADER_DIRENT]) AC_CHECK_HEADERS(string.h) @@ -13,9 +23,7 @@ AC_CACHE_CHECK([for working readdir], jm_cv_func_working_readdir, ac_clean_files="$ac_clean_files conf-dir" AC_TRY_RUN( - changequote(<<, >>)dnl - << -# include +[# include # include # if HAVE_STRING_H # include @@ -109,23 +117,13 @@ AC_CACHE_CHECK([for working readdir], jm_cv_func_working_readdir, create_300_file_dir (dir); remove_dir (dir); exit (0); - } - >>, - changequote([, ])dnl + }], jm_cv_func_working_readdir=yes, jm_cv_func_working_readdir=no, jm_cv_func_working_readdir=no)]) - if test x = y; then - dnl This code is deliberately never run via ./configure. - dnl FIXME: this is a gross hack to make autoheader put an entry - dnl for this HAVE_-prefixed symbol in config.h.in. - AC_CHECK_FUNCS(WORKING_READDIR) - fi - - if test $jm_cv_func_working_readdir = yes; then - ac_kludge=HAVE_WORKING_READDIR - AC_DEFINE_UNQUOTED($ac_kludge) + AC_DEFINE_UNQUOTED(HAVE_WORKING_READDIR, 1, +[Define if readdir is found to work properly in some unusual cases. ]) fi ])