diff options
-rw-r--r-- | configure.ac | 24 | ||||
-rw-r--r-- | include/c.h | 9 | ||||
-rw-r--r-- | shlibs/blkid/src/read.c | 12 |
3 files changed, 40 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac index 246afd4f..2aadacf5 100644 --- a/configure.ac +++ b/configure.ac @@ -224,6 +224,30 @@ AC_SEARCH_LIBS([socket], [socket], fi]) AC_SUBST([SOCKET_LIBS]) + +have_dirfd=no +AC_CHECK_FUNCS([dirfd], [have_dirfd=yes], [have_dirfd=no]) +if test x"$have_dirfd" = xno ; then + AC_CHECK_DECLS([dirfd], + [have_dirfd=yes], [have_dirfd=no], + [#include <sys/types.h> + #include <dirent.h>]) +fi + +have_ddfd=no +if test x"$have_dirfd" = xno ; then + AC_CHECK_MEMBERS([DIR.dd_fd], + [have_ddfd=yes], [have_ddfd=no], + [#include <sys/types.h> + #include <dirent.h>]) +fi + +case "$have_dirfd:$have_ddfd" in +no:no) + AC_MSG_ERROR([cannot find a method to get filedescriptor of directory]) ;; +esac + + dnl Static compilation m4_define([UTIL_STATIC_PROGRAMS], [losetup, mount, umount, fdisk, sfdisk, blkid]) diff --git a/include/c.h b/include/c.h index 83be3565..b37c4422 100644 --- a/include/c.h +++ b/include/c.h @@ -73,5 +73,14 @@ static inline __attribute__((const)) int is_power_of_2(unsigned long num) typedef int64_t loff_t; #endif +#if !defined(HAVE_DIRFD) && (!defined(HAVE_DECL_DIRFD) || HAVE_DECL_DIRFD == 0) && defined(HAVE_DIR_DD_FD) +#include <sys/types.h> +#include <dirent.h> +static inline int dirfd(DIR *d) +{ + return d->dd_fd; +} +#endif + #endif /* UTIL_LINUX_C_H */ diff --git a/shlibs/blkid/src/read.c b/shlibs/blkid/src/read.c index e6aa0836..3ff9ebe9 100644 --- a/shlibs/blkid/src/read.c +++ b/shlibs/blkid/src/read.c @@ -10,7 +10,6 @@ * %End-Header% */ -#define _XOPEN_SOURCE 600 /* for inclusion of strtoull */ #include <stdio.h> #include <ctype.h> @@ -26,6 +25,13 @@ #include "blkidP.h" +#if HAVE_STDLIB_H +# ifndef _XOPEN_SOURCE +# define _XOPEN_SOURCE 600 /* for inclusion of strtoull */ +# endif +# include <stdlib.h> +#endif + #ifdef HAVE_STRTOULL #define STRTOULL strtoull /* defined in stdlib.h if you try hard enough */ #else @@ -33,10 +39,6 @@ #define STRTOULL strtoul #endif -#if HAVE_STDLIB_H -#include <stdlib.h> -#endif - #ifdef TEST_PROGRAM #define blkid_debug_dump_dev(dev) (debug_dump_dev(dev)) static void debug_dump_dev(blkid_dev dev); |