diff options
author | Andrew Tridgell <tridge@samba.org> | 1998-05-06 07:18:06 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 1998-05-06 07:18:06 +0000 |
commit | 59503278bfc27ad27c03dfaeab4e3de02198f81c (patch) | |
tree | 522f4fc3b5d46df46f150e506f78d606f8f9cb40 | |
parent | d6e6ecbdbf0452ec95afc98c2700076e39b4692f (diff) | |
download | rsync-59503278bfc27ad27c03dfaeab4e3de02198f81c.tar.gz |
better test for solaris broken readdir
-rw-r--r-- | configure.in | 14 | ||||
-rw-r--r-- | 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 <sys/types.h> -#include <utime.h>], -[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 <sys/types.h> +#include <dirent.h> +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 <sys/types.h> #include <utime.h>], [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);], @@ -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 } |