use AC_HEADER_DIRECT and all the associated cruft
authorJim Meyering <jim@meyering.net>
Thu, 1 Nov 2001 16:55:16 +0000 (16:55 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 1 Nov 2001 16:55:16 +0000 (16:55 +0000)
m4/dirfd.m4

index fce3e99..fee5fb2 100644 (file)
@@ -5,8 +5,25 @@ dnl From Jim Meyering
 
 AC_DEFUN([UTILS_FUNC_DIRFD],
 [
+  AC_HEADER_DIRENT
   AC_REPLACE_FUNCS([dirfd])
-  AC_CHECK_DECLS([dirfd])
+  dirfd_headers='
+#if HAVE_DIRENT_H
+# include <dirent.h>
+#else /* not HAVE_DIRENT_H */
+# define dirent direct
+# if HAVE_SYS_NDIR_H
+#  include <sys/ndir.h>
+# endif /* HAVE_SYS_NDIR_H */
+# if HAVE_SYS_DIR_H
+#  include <sys/dir.h>
+# endif /* HAVE_SYS_DIR_H */
+# if HAVE_NDIR_H
+#  include <ndir.h>
+# endif /* HAVE_NDIR_H */
+#endif /* HAVE_DIRENT_H */
+'
+  AC_CHECK_DECLS([dirfd], , , $dirfd_headers)
   if test $ac_cv_func_dirfd = no; then
     AC_CACHE_CHECK(
              [how to get the file descriptor associated with an open DIR*],
@@ -30,8 +47,7 @@ AC_DEFUN([UTILS_FUNC_DIRFD],
 
          DEFS="$DEFS -DDIR_TO_FD=$ac_expr"
          AC_TRY_COMPILE(
-           [#include <sys/types.h>
-#include <dirent.h>
+           [$dirfd_headers
            ],
            [DIR *dir_p = opendir("."); (void) ($ac_expr);],
            dir_fd_done=yes