5 AC_DEFUN(jm_FUNC_READDIR,
7 AC_REQUIRE([AC_HEADER_DIRENT])
8 AC_CHECK_HEADERS(string.h)
9 AC_CACHE_CHECK([for working readdir], jm_cv_func_working_readdir,
11 changequote(<<, >>)dnl
14 # include <sys/types.h>
21 # define NLENGTH(direct) (strlen((direct)->d_name))
22 # else /* not HAVE_DIRENT_H */
23 # define dirent direct
24 # define NLENGTH(direct) ((direct)->d_namlen)
25 # ifdef HAVE_SYS_NDIR_H
26 # include <sys/ndir.h>
27 # endif /* HAVE_SYS_NDIR_H */
28 # ifdef HAVE_SYS_DIR_H
30 # endif /* HAVE_SYS_DIR_H */
33 # endif /* HAVE_NDIR_H */
34 # endif /* HAVE_DIRENT_H */
36 # define DOT_OR_DOTDOT(Basename) \
37 (Basename[0] == '.' && (Basename[1] == '\0' \
38 || (Basename[1] == '.' && Basename[2] == '\0')))
41 create_300_file_dir (const char *dir)
45 if (mkdir (dir, 0700))
50 for (i = 0; i < 300; i++)
55 sprintf (file_name, "%03d", i);
56 out = fopen (file_name, "w");
59 if (fclose (out) == EOF)
68 remove_dir (const char *dir)
81 struct dirent *dp = readdir (dirp);
85 if (DOT_OR_DOTDOT (dp->d_name))
88 if (unlink (dp->d_name))
103 const char *dir = "conf-dir";
104 create_300_file_dir (dir);
110 jm_cv_func_working_readdir=yes,
111 jm_cv_func_working_readdir=no,
112 jm_cv_func_working_readdir=no)])
115 dnl This code is deliberately never run via ./configure.
116 dnl FIXME: this is a gross hack to make autoheader put an entry
117 dnl for this HAVE_-prefixed symbol in config.h.in.
118 AC_CHECK_FUNCS(WORKING_READDIR)
121 if test $jm_cv_func_working_readdir = yes; then
122 ac_kludge=HAVE_WORKING_READDIR
123 AC_DEFINE_UNQUOTED($ac_kludge)