[#21809] lib/test/unit/ui/tk/testrunner.rb — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

23 messages 2003/11/01
[#21815] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/01

永井@知能.九工大です.

[#21858] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21859] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/06

永井@知能.九工大です.

[#21860] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/06

なかだです。

[#21861] Re: lib/test/unit/ui/tk/testrunner.rb — Hidetoshi NAGAI <nagai@...> 2003/11/07

永井@知能.九工大です.

[#21862] Re: lib/test/unit/ui/tk/testrunner.rb — nobu.nakada@... 2003/11/07

なかだです。

[#21946] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2003/11/18
[#21972] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content. — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/19

Siena. です。

[#22013] HTTP_PROXY — Tanaka Akira <akr@...17n.org>

ふと

19 messages 2003/11/24

[#22042] ENV["path"].tainted? — Tanaka Akira <akr@...17n.org>

ENV["path"] の値が

14 messages 2003/11/25
[#22043] Re: ENV["path"].tainted? — matz@... (Yukihiro Matsumoto) 2003/11/25

まつもと ゆきひろです

[#22071] Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

はじめまして。山本といいます。

119 messages 2003/11/28
[#22075] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22076] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/29

> 山本さんのパッチがうまく当たらず手パッチしたので、念のため何度か

[#22078] Re: Dir.glob と Shjift_JIS について — siena@... (Siena. / SHINAGAWA, Norihide) 2003/11/29

Siena. です。

[#22089] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/11/30

こんにちは、山本です。

[#22100] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/01

山本です。

[#22147] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[#22258] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。glob_helperをリファクタリングしてみました。

[#22263] Re: Dir.glob と Shjift_JIS について — nobu.nakada@... 2003/12/13

なかだです。

[#22267] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/13

山本です。

[#22441] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/27

山本です。

[#22442] Re: Dir.glob と Shjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/27

まつもと ゆきひろです

[#22443] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22444] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。パッチを送ります。

[#22445] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22446] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22447] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/28

山本です。

[#22449] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/29

山本です。

[#22451] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/29

まつもと ゆきひろです

[#22452] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>すいません。パッチを出す時にはいつもどの時点のソースに対する

[#22453] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22454] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

>|すみません、1.8.1に対してです。

[#22455] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22456] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/30

こんにちは、山本です。

[#22457] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2003/12/30

まつもと ゆきひろです

[#22470] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/31

山本です。

[#22471] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/01

山本です。

[#22476] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22477] Re: Dir.glob とShjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/02

>山本です。[ruby-dev:22470]にバグがあったので修正しました。

[#22478] Re: Dir.glob とShjift_JIS について — matz@... (Yukihiro Matsumoto) 2004/01/02

まつもと ゆきひろです

[#22151] Re: Dir.glob と Shjift_JIS について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2003/12/05

山本です。

[ruby-dev:21951] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content.

From: Tietew <tietew-ml-ruby-dev@...>
Date: 2003-11-18 13:28:55 UTC
List: ruby-dev #21951
On Tue, 18 Nov 2003 21:45:24 +0900
In article <20031118214513.689341.eban@os.rim.or.jp>
[[ruby-dev:21950] Re: [ruby-cvs] ruby, ruby/lib, ruby/test/fileutils: * lib/fileutils.rb (fu_same?): check by inode instead of path name, to detect two hard links pointing to the same content.]
WATANABE Hirofumi <eban@os.rim.or.jp> wrote:

> > rb_w32_stat に手を加えて st_ino に有効な値(それでも NTFS オンリー
> > だが)が入るようにしようと思ったら,NTFS のインデクス番号は 
> > 64bit で (see BY_HANDLE_INFORMATION),st_ino (_ino_t == unsigned short!) 
> > には絶対に入らない! がーん!!
> 
> そのためにCygwinではino_tが64ビットになってます。

む,無理矢理 64bit 化パッチ (^^;;
# 注: このままだと File::Stat#size が 64bit size に対応できてない。


? win32/ino.patch
Index: win32/Makefile.sub
===================================================================
RCS file: /src/ruby/win32/Makefile.sub,v
retrieving revision 1.54
diff -p -u -2 -r1.54 Makefile.sub
--- win32/Makefile.sub	5 Nov 2003 02:15:27 -0000	1.54
+++ win32/Makefile.sub	18 Nov 2003 13:26:15 -0000
@@ -281,4 +281,5 @@ config.h:
 #define FILE_COUNT _cnt
 #define FILE_READPTR _ptr
+#define HUGE_ST_INO 1
 #define DEFAULT_KCODE KCODE_NONE
 #define DLEXT ".so"
Index: win32/win32.c
===================================================================
RCS file: /src/ruby/win32/win32.c,v
retrieving revision 1.101
diff -p -u -2 -r1.101 win32.c
--- win32/win32.c	6 Nov 2003 02:42:10 -0000	1.101
+++ win32/win32.c	18 Nov 2003 13:26:15 -0000
@@ -1332,5 +1332,5 @@ rb_w32_opendir(const char *filename)
     char               scannamespc[PATHLEN];
     char	      *scanname = scannamespc;
-    struct stat	       sbuf;
+    struct rb_w32_stat sbuf;
     struct _finddata_t fd;
     long               fh;
@@ -2703,9 +2703,36 @@ isUNCRoot(const char *path)
 }
 
+static int
+convert_stat(HANDLE fh, struct rb_w32_stat *st, const struct _stat *st2)
+{
+    BY_HANDLE_FILE_INFORMATION fi;
+
+    st->st_dev = st2->st_dev;
+    st->st_ino = st2->st_ino;
+    st->st_mode = st2->st_mode & ~(S_IWGRP | S_IWOTH);
+    st->st_nlink = st2->st_nlink;
+    st->st_uid = st2->st_uid;
+    st->st_gid = st2->st_gid;
+    st->st_rdev = st2->st_rdev;
+    st->st_size = st2->st_size;
+    st->st_atime = st2->st_atime;
+    st->st_mtime = st2->st_mtime;
+    st->st_ctime = st2->st_ctime;
+    if(!GetFileInformationByHandle(fh, &fi)) {
+	errno = map_errno(GetLastError());
+	return -1;
+    }
+    st->st_ino = ((unsigned __int64)fi.nFileIndexHigh<<32) | fi.nFileIndexLow;
+    st->st_nlink = fi.nNumberOfLinks;
+    st->st_size = ((unsigned __int64)fi.nFileSizeHigh<<32) | fi.nFileSizeLow;
+    return 0;
+}
+
 int
-rb_w32_stat(const char *path, struct stat *st)
+rb_w32_stat(const char *path, struct rb_w32_stat *st)
 {
     const char *p;
     char *buf1, *buf2, *s;
+    struct _stat st2;
     int len;
     int ret;
@@ -2737,7 +2764,14 @@ rb_w32_stat(const char *path, struct sta
     buf2 = ALLOCA_N(char, MAXPATHLEN);
     if (_fullpath(buf2, buf1, MAXPATHLEN)) {
-	ret = stat(buf2, st);
+	ret = _stat(buf2, &st2);
 	if (ret == 0) {
-	    st->st_mode &= ~(S_IWGRP | S_IWOTH);
+	    HANDLE fh;
+	    fh = CreateFile(buf2, GENERIC_READ,
+		FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
+		FILE_ATTRIBUTE_NORMAL | FILE_FLAG_BACKUP_SEMANTICS, NULL);
+	    if(fh != INVALID_HANDLE_VALUE) {
+		ret = convert_stat(fh, st, &st2);
+		CloseHandle(fh);
+	    }
 	}
 	return ret;
@@ -2747,4 +2781,16 @@ rb_w32_stat(const char *path, struct sta
 }
 
+int
+rb_w32_fstat(int h, struct rb_w32_stat *st)
+{
+    struct _stat st2;
+    int ret;
+    
+    ret = _fstat(h, &st2);
+    if(ret == 0)
+	return convert_stat((HANDLE)_get_osfhandle(h), st, &st2);
+    return ret;
+}
+
 static long
 filetime_to_clock(FILETIME *ft)
@@ -3227,5 +3273,5 @@ rb_w32_utime(const char *path, struct ut
     FILETIME atime, mtime;
     struct tm *tm;
-    struct stat stat;
+    struct rb_w32_stat stat;
     int ret = 0;
 
Index: win32/win32.h
===================================================================
RCS file: /src/ruby/win32/win32.h,v
retrieving revision 1.44
diff -p -u -2 -r1.44 win32.h
--- win32/win32.h	26 Aug 2003 20:17:18 -0000	1.44
+++ win32/win32.h	18 Nov 2003 13:26:15 -0000
@@ -117,5 +117,20 @@ extern "C++" {
 #define fsync(h)		_commit(h)
 #undef stat
-#define stat(path,st)		rb_w32_stat(path,st)
+#define stat		rb_w32_stat
+#define fstat(h, st)		rb_w32_fstat(h, st)
+
+struct rb_w32_stat {
+  _dev_t st_dev;
+  unsigned __int64 st_ino;
+  unsigned short st_mode;
+  unsigned long st_nlink;
+  short st_uid;
+  short st_gid;
+  _dev_t st_rdev;
+  unsigned __int64 st_size;
+  time_t st_atime;
+  time_t st_mtime;
+  time_t st_ctime;
+};
 
 #ifdef __MINGW32__
@@ -480,4 +495,6 @@ int  rb_w32_close(int);
 int  rb_w32_fclose(FILE*);
 int  rb_w32_utime(const char *, struct utimbuf *);
+int  rb_w32_stat(const char *, struct rb_w32_stat *);
+int  rb_w32_fstat(int, struct rb_w32_stat *);
 #define Sleep(msec) (void)rb_w32_sleep(msec)
 


—[ Tietew ]——————————————————————————
 メ : tietew@tietew.net / tietew@raug.net / tietew@masuclub.net
ホペ: http://www.tietew.net/     Tietew Windows Lab.
      http://www.masuclub.net/   鱒倶楽部
指紋: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA


In This Thread