Under a _WIN32 build, FileTest.writable? returns true for all files because the code assumes that a geteuid() of 0 means any file is writable. geteuid() returns 0 for me perhaps because I'm part of the Administrator group, perhaps not, but in any case it doesn't mean I can write to any file. The patch below fixes it by making eaccess(...) fall through to just calling access(), which is correct for _WIN32 builds. Index: ChangeLog =================================================================== RCS file: /src/ruby/ChangeLog,v retrieving revision 1.1428 diff -u -r1.1428 ChangeLog --- ChangeLog 16 Jan 2003 18:48:20 -0000 1.1428 +++ ChangeLog 17 Jan 2003 19:22:51 -0000 @@ -1,3 +1,8 @@ +2003-01-17 Matt Armstrong <matt / lickey.com> + + * file.c (eaccess): under windows, make eaccess() just call + access(). + Fri Jan 17 03:33:42 2003 Akinori MUSHA <knu / iDaemons.org> * sprintf.c (rb_f_sprintf): Fix a bug caused by an uninitialized Index: file.c =================================================================== RCS file: /src/ruby/file.c,v retrieving revision 1.128 diff -u -r1.128 file.c --- file.c 16 Jan 2003 07:34:01 -0000 1.128 +++ file.c 17 Jan 2003 19:22:55 -0000 @@ -463,7 +463,7 @@ const char *path; int mode; { -#ifdef S_IXGRP +#if defined(S_IXGRP) && !defined(_WIN32) struct stat st; int euid;