From d1a4bf7d3a479a335e26f879098ac9f2d7421092 Mon Sep 17 00:00:00 2001 From: usa Date: Sun, 8 Sep 2002 10:06:40 +0000 Subject: * 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 --- ChangeLog | 9 +++++++++ time.c | 2 ++ win32/win32.c | 10 ++++++++-- win32/win32.h | 30 ++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index eba88e4e60..c3b4850a89 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Sun Sep 8 19:02:28 2002 NAKAMURA Usaku + + * 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. + Sun Sep 8 14:38:31 2002 WATANABE Hirofumi * configure.in: modify program_prefix only if specified diff --git a/time.c b/time.c index 0d7216acaa..ff66acf1e3 100644 --- a/time.c +++ b/time.c @@ -43,6 +43,8 @@ struct time_object { #define GetTimeval(obj, tobj) \ Data_Get_Struct(obj, struct time_object, tobj) +static void time_free _((struct time_object *)); + static void time_free(tobj) struct time_object *tobj; 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; } diff --git a/win32/win32.h b/win32/win32.h index b33d075e66..54ca551dca 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -240,6 +240,36 @@ extern int isnan(double); #define S_ISREG(m) (((unsigned short)(m) & S_IFMT) == S_IFREG) #endif +#ifndef S_IRUSR +#define S_IRUSR 0400 +#endif +#ifndef S_IRGRP +#define S_IRGRP 0040 +#endif +#ifndef S_IROTH +#define S_IROTH 0004 +#endif + +#ifndef S_IWUSR +#define S_IWUSR 0200 +#endif +#ifndef S_IWGRP +#define S_IWGRP 0020 +#endif +#ifndef S_IWOTH +#define S_IWOTH 0002 +#endif + +#ifndef S_IXUSR +#define S_IXUSR 0100 +#endif +#ifndef S_IXGRP +#define S_IXGRP 0010 +#endif +#ifndef S_IXOTH +#define S_IXOTH 0001 +#endif + // // define this so we can do inplace editing // -- cgit v1.2.3