mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* win32/win32.c (win32_stat): replace stat for enable when pathname
ends with '/' or '\' for mswin32 on Win9X / Win2k. * win32/win32.h: ditto. * ruby.h: ditto. * dir.c (rb_glob_helper): ditto. * file.c (rb_stat, rb_file_s_stat, eaccess, check3rdbyte): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b4ea8ddcdd
commit
08f8ab9c37
6 changed files with 46 additions and 6 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
Fri Feb 10 00:00:30 2001 Nobuyoshi Nakada <nobu.nakada@nifty.ne.jp>
|
||||
|
||||
* win32/win32.c (win32_stat): replace stat for enable when pathname
|
||||
ends with '/' or '\' for mswin32 on Win9X / Win2k.
|
||||
|
||||
* win32/win32.h: ditto.
|
||||
|
||||
* ruby.h: ditto.
|
||||
|
||||
* dir.c (rb_glob_helper): ditto.
|
||||
|
||||
* file.c (rb_stat, rb_file_s_stat, eaccess, check3rdbyte): ditto.
|
||||
|
||||
Fri Feb 9 22:54:57 2001 WATANABE Hirofumi <eban@ruby-lang.org>
|
||||
|
||||
* ruby.c (ruby_init_loadpath): convert '\\' to '/'
|
||||
|
|
2
dir.c
2
dir.c
|
@ -568,7 +568,7 @@ rb_glob_helper(path, flag, func, arg)
|
|||
char *p, *m;
|
||||
|
||||
if (!has_magic(path, 0)) {
|
||||
if (stat(path, &st) == 0) {
|
||||
if (rb_sys_stat(path, &st) == 0) {
|
||||
(*func)(path, arg);
|
||||
}
|
||||
return;
|
||||
|
|
10
file.c
10
file.c
|
@ -67,7 +67,7 @@ char *strrchr _((const char*,const char));
|
|||
#include <sys/stat.h>
|
||||
|
||||
#ifndef HAVE_LSTAT
|
||||
#define lstat stat
|
||||
#define lstat rb_sys_stat
|
||||
#endif
|
||||
|
||||
VALUE rb_cFile;
|
||||
|
@ -313,7 +313,7 @@ rb_stat(file, st)
|
|||
#if defined DJGPP
|
||||
if (RSTRING(file)->len == 0) return -1;
|
||||
#endif
|
||||
return stat(RSTRING(file)->ptr, st);
|
||||
return rb_sys_stat(RSTRING(file)->ptr, st);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -323,7 +323,7 @@ rb_file_s_stat(obj, fname)
|
|||
struct stat st;
|
||||
|
||||
Check_SafeStr(fname);
|
||||
if (stat(RSTRING(fname)->ptr, &st) == -1) {
|
||||
if (rb_sys_stat(RSTRING(fname)->ptr, &st) == -1) {
|
||||
rb_sys_fail(RSTRING(fname)->ptr);
|
||||
}
|
||||
return stat_new(&st);
|
||||
|
@ -419,7 +419,7 @@ eaccess(path, mode)
|
|||
struct stat st;
|
||||
static int euid = -1;
|
||||
|
||||
if (stat(path, &st) < 0) return (-1);
|
||||
if (rb_sys_stat(path, &st) < 0) return (-1);
|
||||
|
||||
if (euid == -1)
|
||||
euid = geteuid ();
|
||||
|
@ -721,7 +721,7 @@ check3rdbyte(file, mode)
|
|||
{
|
||||
struct stat st;
|
||||
|
||||
if (stat(file, &st) < 0) return Qfalse;
|
||||
if (rb_sys_stat(file, &st) < 0) return Qfalse;
|
||||
if (st.st_mode & mode) return Qtrue;
|
||||
return Qfalse;
|
||||
}
|
||||
|
|
4
ruby.h
4
ruby.h
|
@ -591,6 +591,10 @@ rb_special_const_p(VALUE obj)
|
|||
static char *dln_libs_to_be_linked[] = { EXTLIB, 0 };
|
||||
#endif
|
||||
|
||||
#ifndef rb_sys_stat
|
||||
#define rb_sys_stat stat
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
} /* extern "C" { */
|
||||
#endif
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#ifndef index
|
||||
#define index(x, y) strchr((x), (y))
|
||||
#endif
|
||||
#define isdirsep(x) ((x) == '/' || (x) == '\\')
|
||||
|
||||
#ifndef bool
|
||||
#define bool int
|
||||
|
@ -2612,6 +2613,26 @@ myrename(const char *oldpath, const char *newpath)
|
|||
return res;
|
||||
}
|
||||
|
||||
int
|
||||
win32_stat(const char *path, struct stat *st)
|
||||
{
|
||||
const char *p = path;
|
||||
|
||||
if ((isdirsep(*p) && (p++, TRUE)) || /* absolute path or UNC */
|
||||
(ISALPHA(*p) && p[1] == ':' && (p += 2, TRUE))) { /* has drive */
|
||||
if (isdirsep(*p)) p++;
|
||||
}
|
||||
if (*p && (p = CharPrev(p, p + strlen(p)), isdirsep(*p))) {
|
||||
/* Win95/2000 fail with trailing path separator? */
|
||||
int len = p - path;
|
||||
char *s = ALLOCA_N(char, len + 1);
|
||||
memcpy(s, path, len);
|
||||
s[len] = '\0';
|
||||
path = s;
|
||||
}
|
||||
return stat(path, st);
|
||||
}
|
||||
|
||||
static long
|
||||
filetime_to_clock(FILETIME *ft)
|
||||
{
|
||||
|
|
|
@ -162,6 +162,8 @@ extern "C++" {
|
|||
#define pclose _pclose
|
||||
#define strcasecmp _stricmp
|
||||
#define strncasecmp _strnicmp
|
||||
#undef rb_sys_stat
|
||||
#define rb_sys_stat win32_stat
|
||||
/* these are defined in nt.c */
|
||||
|
||||
#ifdef __MINGW32__
|
||||
|
|
Loading…
Reference in a new issue