From 59503278bfc27ad27c03dfaeab4e3de02198f81c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 6 May 1998 07:18:06 +0000 Subject: [PATCH] better test for solaris broken readdir --- configure.in | 14 ++++++++------ syscall.c | 17 ++++------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/configure.in b/configure.in index f7400730..14d80565 100644 --- a/configure.in +++ b/configure.in @@ -69,14 +69,16 @@ main() { char c; c=250; exit((c > 0)?0:1); }], echo yes;AC_DEFINE(HAVE_UNSIGNED_CHAR), echo no) -echo $ac_n "checking for utimbuf ... $ac_c" -AC_TRY_COMPILE([#include -#include ], -[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);], -echo yes;AC_DEFINE(HAVE_UTIMBUF), +echo $ac_n "checking for broken readdir ... $ac_c" +AC_TRY_RUN([#include +#include +main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d); +if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 && +di->d_name[0] == 0) return 0; return 1;} ], +echo yes;AC_DEFINE(HAVE_BROKEN_READDIR), echo no) -echo $ac_n "checking for broken readdir ... $ac_c" +echo $ac_n "checking for utimbuf ... $ac_c" AC_TRY_COMPILE([#include #include ], [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);], diff --git a/syscall.c b/syscall.c index 5bf3e476..96b42b6f 100644 --- a/syscall.c +++ b/syscall.c @@ -136,18 +136,9 @@ OFF_T do_lseek(int fd, OFF_T offset, int whence) char *d_name(struct dirent *di) { -#if defined(SunOS) && SunOS >= 50 - static int first = 1; - static int broken; - if (first) { - first = 0; - if (!di->d_name[0] && strcmp(".", di->d_name-2)==0) { - fprintf(stderr,"WARNING: broken readdir\n"); - broken = 1; - } - } - if (broken) - return (di->d_name - 2); -#endif +#if HAVE_BROKEN_READDIR + return (di->d_name - 2); +#else return di->d_name; +#endif } -- 2.34.1