diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-08 10:06:40 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-09-08 10:06:40 +0000 |
commit | d1a4bf7d3a479a335e26f879098ac9f2d7421092 (patch) | |
tree | 90bae440565a033038a224c4030ed4a12c855dd8 /win32/win32.c | |
parent | b8ff4a843e4dbf1fab1f033a660f80cccf6a095d (diff) | |
download | ruby-d1a4bf7d3a479a335e26f879098ac9f2d7421092.tar.gz |
* time.c: prototype; time_free() to avoid VC++ warnings.
* win32/win32.c (rb_w32_stat): remove S_IWGRP and S_IWOTH bits from
st_mode.
* win32/win32.h (S_I*): define if not defined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2822 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'win32/win32.c')
-rw-r--r-- | win32/win32.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/win32/win32.c b/win32/win32.c index dec014c388..d33d023ccd 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -2506,6 +2506,7 @@ rb_w32_stat(const char *path, struct stat *st) char *buf2 = ALLOCA_N(char, MAXPATHLEN); char *s; int len; + int ret; for (p = path, s = buf1; *p; p++, s++) { if (*p == '/') @@ -2521,8 +2522,13 @@ rb_w32_stat(const char *path, struct stat *st) strcat(buf1, "\\"); } else if (*p == '\\' || *p == ':') strcat(buf1, "."); - if (_fullpath(buf2, buf1, MAXPATHLEN)) - return stat(buf2, st); + if (_fullpath(buf2, buf1, MAXPATHLEN)) { + ret = stat(buf2, st); + if (ret == 0) { + st->st_mode &= ~(S_IWGRP | S_IWOTH); + } + return ret; + } else return -1; } |