diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-01-20 10:55:18 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-01-20 10:55:18 +0000 |
commit | 70e9163c9c18e995515598085cb824e554eb7ae7 (patch) | |
tree | a42dc8b2a6c031354bf31472de888bfc8a060132 /m4/d-ino.m4 | |
parent | cbf5993c43f49281173f185863577d86bfac6eae (diff) | |
download | coreutils-tarball-70e9163c9c18e995515598085cb824e554eb7ae7.tar.gz |
coreutils-8.25HEADcoreutils-8.25master
Diffstat (limited to 'm4/d-ino.m4')
-rw-r--r-- | m4/d-ino.m4 | 60 |
1 files changed, 40 insertions, 20 deletions
diff --git a/m4/d-ino.m4 b/m4/d-ino.m4 index d87b4db..5f491c6 100644 --- a/m4/d-ino.m4 +++ b/m4/d-ino.m4 @@ -1,11 +1,11 @@ -#serial 8 +# serial 14 dnl From Jim Meyering. dnl dnl Check whether struct dirent has a member named d_ino. dnl -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2006 Free Software +# Copyright (C) 1997, 1999-2001, 2003-2004, 2006-2007, 2009-2016 Free Software # Foundation, Inc. # This file is free software; the Free Software Foundation @@ -13,23 +13,43 @@ dnl # with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO], - [AC_CACHE_CHECK([for d_ino member in directory struct], - jm_cv_struct_dirent_d_ino, - [AC_TRY_LINK(dnl - [ -#include <sys/types.h> -#include <dirent.h> - ], - [struct dirent dp; dp.d_ino = 0;], - - jm_cv_struct_dirent_d_ino=yes, - jm_cv_struct_dirent_d_ino=no) - ] - ) - if test $jm_cv_struct_dirent_d_ino = yes; then - AC_DEFINE(D_INO_IN_DIRENT, 1, - [Define if there is a member named d_ino in the struct describing - directory headers.]) - fi + [AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([for d_ino member in directory struct], + gl_cv_struct_dirent_d_ino, + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/types.h> + #include <sys/stat.h> + #include <dirent.h> + ]], + [[DIR *dp = opendir ("."); + struct dirent *e; + struct stat st; + if (! dp) + return 1; + e = readdir (dp); + if (! e) + return 2; + if (lstat (e->d_name, &st) != 0) + return 3; + if (e->d_ino != st.st_ino) + return 4; + return 0; + ]])], + [gl_cv_struct_dirent_d_ino=yes], + [gl_cv_struct_dirent_d_ino=no], + [case "$host_os" in + # Guess yes on glibc systems with Linux kernel. + linux*-gnu*) gl_cv_struct_dirent_d_ino="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_struct_dirent_d_ino="guessing no" ;; + esac + ])]) + case "$gl_cv_struct_dirent_d_ino" in + *yes) + AC_DEFINE([D_INO_IN_DIRENT], [1], + [Define if struct dirent has a member d_ino that actually works.]) + ;; + esac ] ) |