summaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-08 10:06:40 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-08 10:06:40 +0000
commitd1a4bf7d3a479a335e26f879098ac9f2d7421092 (patch)
tree90bae440565a033038a224c4030ed4a12c855dd8 /win32
parentb8ff4a843e4dbf1fab1f033a660f80cccf6a095d (diff)
* 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')
-rw-r--r--win32/win32.c10
-rw-r--r--win32/win32.h30
2 files changed, 38 insertions, 2 deletions
diff --git a/win32/win32.c b/win32/win32.c
index dec014c..d33d023 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 b33d075..54ca551 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
//