diff options
author | Jim Meyering <jim@meyering.net> | 2001-11-01 16:41:57 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2001-11-01 16:41:57 +0000 |
commit | afd8381b512e1ac2dfea3fc3d488e5d1fb983133 (patch) | |
tree | 12010eb1e9ca3086b7139271c62d9db26907657f | |
parent | 76ffae0660e159c417ea9ead2a0bc2344a2f1bca (diff) | |
download | coreutils-afd8381b512e1ac2dfea3fc3d488e5d1fb983133.tar.xz |
(UTILS_FUNC_DIRFD): New macro.
-rw-r--r-- | m4/dirfd.m4 | 49 |
1 files changed, 49 insertions, 0 deletions
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 <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 +]) |