changeset 3566:ff92e672a7a6

(UTILS_FUNC_DIRFD): New macro.
author Jim Meyering <jim@meyering.net>
date Thu, 01 Nov 2001 16:41:57 +0000
parents 889b0cda44e1
children 9a6f6eae21f4
files m4/dirfd.m4
diffstat 1 files changed, 49 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/m4/dirfd.m4
@@ -0,0 +1,49 @@
+#serial 1
+
+dnl Find out how to get the file descriptor associated with an open DIR*.
+dnl From Jim Meyering
+
+AC_DEFUN([UTILS_FUNC_DIRFD],
+[
+  AC_REPLACE_FUNCS([dirfd])
+  if test $ac_cv_func_dirfd = no; then
+    AC_CACHE_CHECK(
+	      [how to get the file descriptor associated with an open DIR*],
+		   ac_cv_sys_dir_to_fd,
+      [
+        dirfd_save_DEFS=$DEFS
+	for ac_expr in						\
+								\
+	    '# Solaris'						\
+	    'dir_p->d_fd'					\
+								\
+	    '# Solaris'						\
+	    'dir_p->dd_fd'					\
+								\
+	    '# systems for which the info is not available'	\
+	    -1							\
+	    ; do
+
+	  # Skip each embedded comment.
+	  case "$ac_expr" in '#'*) continue;; esac
+
+	  DEFS="$DEFS -DDIR_TO_FD=$ac_expr"
+	  AC_TRY_COMPILE(
+	    [#include <sys/types.h>
+	     #include <dirent.h>
+	    ],
+	    [DIR *dir_p = opendir("."); (void) ($ac_expr);],
+	    dir_fd_done=yes
+	  )
+	  DEFS=$dirfd_save_DEFS
+	  test "$dir_fd_done" = yes && break
+	done
+
+	ac_cv_sys_dir_to_fd=$ac_expr
+      ]
+    )
+    AC_DEFINE_UNQUOTED(DIR_TO_FD,
+      $ac_cv_sys_dir_to_fd,
+      [the file descriptor associated with `dir_p'])
+  fi
+])