Mercurial > hg > octave-lyh > gnulib-hg
changeset 8796:89e066e48000
* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Test whether
readdir returns garbage in d_ino. Problem reported by Kaz Sasayama in
<http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00021.html>.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Wed, 02 May 2007 19:06:46 +0000 |
parents | 38a423116341 |
children | 339ca8e82188 |
files | ChangeLog m4/d-ino.m4 |
diffstat | 2 files changed, 28 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-05-02 Paul Eggert <eggert@cs.ucla.edu> + + * m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Test whether + readdir returns garbage in d_ino. Problem reported by Kaz Sasayama in + <http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00021.html>. + 2007-05-02 Sergey Poznyakoff <gray@gnu.org.ua> * lib/argp-help.c (struct hol_entry): New member `ord'.
--- a/m4/d-ino.m4 +++ b/m4/d-ino.m4 @@ -1,11 +1,11 @@ -#serial 8 +#serial 9 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, 2000, 2001, 2003, 2004, 2006, 2007 Free Software # Foundation, Inc. # This file is free software; the Free Software Foundation @@ -14,19 +14,26 @@ 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 + 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); + return ! (e + && stat (e->d_name, &st) == 0 + && e->d_ino == st.st_ino);]])], + [gl_cv_struct_dirent_d_ino=yes], + [gl_cv_struct_dirent_d_ino=no], + [gl_cv_struct_dirent_d_ino=no])]) + if test $gl_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.])