changeset 3571:3b55576f7721

use AC_HEADER_DIRECT and all the associated cruft
author Jim Meyering <jim@meyering.net>
date Thu, 01 Nov 2001 16:55:16 +0000
parents 151c75a0f146
children 7cc77af12a59
files m4/dirfd.m4
diffstat 1 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/m4/dirfd.m4
+++ b/m4/dirfd.m4
@@ -5,8 +5,25 @@
 
 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 @@
 
 	  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