[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: getcwd fails on Interix 3.5
From: |
Paul Eggert |
Subject: |
Re: getcwd fails on Interix 3.5 |
Date: |
Wed, 02 May 2007 12:08:10 -0700 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) Emacs/21.4 (gnu/linux) |
Kaz Sasayama <address@hidden> writes:
> 1. Modify the configure test for d_ino member in struct dirent to
> fail on Interix and process as if there is no d_ino member.
Sounds good. I installed the following into gnulib; does it fix your
problem?
* 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>.
Index: m4/d-ino.m4
===================================================================
RCS file: /cvsroot/gnulib/gnulib/m4/d-ino.m4,v
retrieving revision 1.10
diff -u -p -r1.10 d-ino.m4
--- m4/d-ino.m4 11 Jul 2006 06:02:51 -0000 1.10
+++ m4/d-ino.m4 2 May 2007 19:06:43 -0000
@@ -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 @@ dnl
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.])