summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--lib/common/BoxPlatform.h8
2 files changed, 9 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 0cca65a9..8d37cea0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -159,6 +159,8 @@ AC_CHECK_MEMBERS([struct sockaddr_in.sin_len],,, [[
#include <sys/types.h>
#include <netinet/in.h>
]])
+AC_CHECK_MEMBERS([DIR.d_fd],,, [[#include <dirent.h>]])
+AC_CHECK_MEMBERS([DIR.dd_fd],,, [[#include <dirent.h>]])
AC_CHECK_DECLS([INFTIM],,, [[#include <poll.h>]])
AC_CHECK_DECLS([SO_PEERCRED],,, [[#include <sys/socket.h>]])
diff --git a/lib/common/BoxPlatform.h b/lib/common/BoxPlatform.h
index af595e04..2f0096aa 100644
--- a/lib/common/BoxPlatform.h
+++ b/lib/common/BoxPlatform.h
@@ -170,7 +170,13 @@
// so do it here instead of in configure.ac.
#if ! HAVE_DECL_DIRFD
- #define dirfd(x) (x)->d_fd
+ #ifdef HAVE_DIR_D_FD
+ #define dirfd(x) (x)->d_fd
+ #elif defined HAVE_DIR_DD_FD
+ #define dirfd(x) (x)->dd_fd
+ #else
+ #error No way to get file descriptor from DIR structure
+ #endif
#endif
#endif // BOXPLATFORM__H