-#serial 1
+#serial 3
-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.
+
+dnl Written by Jim Meyering.
AC_DEFUN(jm_FUNC_READDIR,
[dnl
ac_clean_files="$ac_clean_files conf-dir"
AC_TRY_RUN(
- changequote(<<, >>)dnl
- <<
-# include <stdio.h>
+[# include <stdio.h>
# include <sys/types.h>
# if HAVE_STRING_H
# include <string.h>
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
])