From: Jim Meyering Date: Thu, 1 Nov 2001 16:41:57 +0000 (+0000) Subject: (UTILS_FUNC_DIRFD): New macro. X-Git-Tag: cvs-readonly~5607 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=7e7fa1da8c3471b86ff76898f4e73d2c43bcd6e8;p=gnulib.git (UTILS_FUNC_DIRFD): New macro. --- diff --git a/m4/dirfd.m4 b/m4/dirfd.m4 new file mode 100644 index 000000000..b62e12a54 --- /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 + #include + ], + [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 +])