[#23843] st_dev by stat() != st_dev by fstat() in windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
6 messages
2004/07/01
[#23847] Re: st_dev by stat() != st_dev by fstat() in windows
— "U.Nakamura" <usa@...>
2004/07/01
こんにちは、なかむら(う)です。
[#23855] Are these comittable? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
12 messages
2004/07/04
[#23856] Re: Are these comittable?
— nobu.nakada@...
2004/07/04
なかだです。
[#23871] syntax error — WATANABE Hirofumi <eban@...>
わたなべです。
5 messages
2004/07/09
[#23876] cgi, cgi/session — 堀川 久 <vzw00011@...>
こんにちは。
10 messages
2004/07/10
[#23890] Re: cgi, cgi/session
— matz@... (Yukihiro Matsumoto)
2004/07/14
まつもと ゆきひろです
[#23884] Ruby 1.8.2 preview1にむけて — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
34 messages
2004/07/13
[#23889] Re: Ruby 1.8.2 preview1にむけて
— "NAKAMURA, Hiroshi" <nakahiro@...>
2004/07/14
なひです。
[#23917] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/16
山本です。
[#23920] Re: Ruby 1.8.2 preview1にむけて
— "NAKAMURA, Hiroshi" <nakahiro@...>
2004/07/16
なひです。
[#23921] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/16
山本です。レスが遅れてすみません。
[#23927] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/16
山本です。
[#23932] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/16
山本です。
[#23936] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/17
山本です。進展がありました。どうも、通常設定されている
[#23937] Re: Ruby 1.8.2 preview1にむけて
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/07/17
山本です。
[#23939] Re: Ruby 1.8.2 preview1にむけて
— GOTOU Yuuzou <gotoyuzo@...>
2004/07/17
In message <20040717191809.EF0AA070.ocean@m2.ccsnet.ne.jp>,
[#23922] ruby 1.8.2 preview1 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
27 messages
2004/07/16
[#23945] Re: ruby 1.8.2 preview1
— akira yamada <akira@...>
2004/07/21
1.8.2または1.8.2-preview2の公開時期について
[#23967] WEBrick::HTTPUtils.escape and URI.escape — Tanaka Akira <akr@...17n.org>
ついでに尋ねますが、WEBrick::HTTPUtils.escape か URI.escape で、
5 messages
2004/07/26
[#23969] Re: WEBrick::HTTPUtils.escape and URI.escape
— Tanaka Akira <akr@...17n.org>
2004/07/26
In article <20040726.145658.35017253.gotoyuzo@sawara.does.notwork.org>,
[#23973] 引数の上書きとsuper — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
5 messages
2004/07/27
[#23991] 1.8.2-preview2? — akira yamada / やまだあきら <akira@...>
9 messages
2004/07/29
[#23995] String#each -> String#each_char — Shugo Maeda <shugo@...>
前田です。
27 messages
2004/07/30
[#23996] Re: String#each -> String#each_char
— matz@... (Yukihiro Matsumoto)
2004/07/30
まつもと ゆきひろです
[#23997] Re: String#each -> String#each_char
— "U.Nakamura" <usa@...>
2004/07/30
こんにちは、なかむら(う)です。
[#23999] Re: String#each -> String#each_char
— matz@... (Yukihiro Matsumoto)
2004/07/30
まつもと ゆきひろです
[#24000] Re: String#each -> String#each_char
— "U.Nakamura" <usa@...>
2004/07/30
こんにちは、なかむら(う)です。
[#24005] Re: String#each -> String#each_char
— Minero Aoki <aamine@...>
2004/07/31
青木です。
[#24012] Re: String#each -> String#each_char
— Shugo Maeda <shugo@...>
2004/08/01
前田です。
[#24014] Re: String#each -> String#each_char
— Minero Aoki <aamine@...>
2004/08/02
青木です。
[#24020] Re: String#each -> String#each_char
— Shugo Maeda <shugo@...>
2004/08/05
前田です。
[#24022] Re: String#each -> String#each_char
— Minero Aoki <aamine@...>
2004/08/05
青木です。
[ruby-dev:23843] st_dev by stat() != st_dev by fstat() in windows
From:
"H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date:
2004-07-01 08:46:02 UTC
List:
ruby-dev #23843
山本です。
http://www.namikilab.tuat.ac.jp/~sasada/diary/ の最初の問題なのですが、
- stat() は、ドライブ文字 - 'A' を st_dev として代入しているので、'F:'
だと 5 になる
- fstat() では無条件に 0 になる
という違いが原因のようです。これは bcc32 の実装ですが、mswin32 と mingw32 も
同様の挙動を示します。
これを解決するには、
- stat() では、GetVolumeInformation() を呼び出し、第4引数で取得する
- fstat() では、GetFileInformationByHandle() を呼び出し、
BY_HANDLE_FILE_INFORMATION の dwVolumeSerialNumber を見る
で等しい値が得られるようですが、関数呼び出しの分遅くなります。
下のパッチで(フルパスでしか st_dev が得られない手抜きパッチです)
Index: win32.c
===================================================================
RCS file: /var/cvs/src/ruby/win32/win32.c,v
retrieving revision 1.117
diff -u -w -b -p -r1.117 win32.c
--- win32.c 21 Jun 2004 00:27:39 -0000 1.117
+++ win32.c 1 Jul 2004 08:03:04 -0000
@@ -2781,6 +2781,12 @@ rb_w32_stat(const char *path, struct sta
ret = stat(buf1, st);
if (ret == 0) {
st->st_mode &= ~(S_IWGRP | S_IWOTH);
+ if (strlen(path) + 2 >= 4) {
+ DWORD dw;
+ buf1[3] = '\0';
+ GetVolumeInformation(buf1, NULL, 0, &dw, NULL, NULL, NULL, 0);
+ st->st_dev = st->st_rdev = dw;
+ }
}
return ret;
}
E:\ruby-cvs\ruby>don \ruby\bin\ruby -e "10000.times { File.stat('e:/ruby-cvs/tes
t.rb') }"
Passing Time : 0:04.099
E:\ruby-cvs\ruby>don miniruby -e "10000.times { File.stat('e:/ruby-cvs/test.rb')
}"
Passing Time : 0:06.879
ぐらいの差があります。これは許容できる遅さでしょうか?
/////////////////////////////////////////////////////////////////////////
bcc32 のソースに S_ISSOCK に対応するコードがないので気づいたのですが、
E:\ruby-cvs\ruby>e:\ruby\bin\ruby -rsocket -ve "io = TCPsocket.new('www.yahoo.co
.jp', 80); p io.stat.socket?; io.close"
ruby 1.8.1 (2003-12-25) [i386-bccwin32]
false
E:\ruby-cvs\ruby>e:\ruby-vc\bin\ruby -rsocket -ve "io = TCPsocket.new('www.yahoo
.co.jp', 80); p io.stat.socket?; io.close"
ruby 1.8.1 (2003-12-25) [i386-mswin32]
false
は意図された動作でしょうか?