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

In message "[ruby-dev:23850] Re: st_dev by stat() != st_dev by fstat() in windows"
    on Jul.01,2004 19:53:26, <ocean / m2.ccsnet.ne.jp> wrote:
| >個人的には10倍くらい遅くなっても許されると思いますが、devだけ
| >対応しても意味はなくてinoもやんないと、と思います。
| ># inoについては[ruby-dev:21951]にTietewさんのパッチあり
| 
| じゅ、10倍ですか・・・stat() は Dir.glob でも使われているので、
| 2,3倍でも厳しいと思っていました。

stat()・fstat()でst_devとst_inoが正しく設定されなければいけな
いのであれば、設定しない限り速度なんて意味ないでしょう。
だから、他に方法がなければ10000倍だって許されると思います :)

というわけで、とりあえずは
 「st_devとst_inoを正しく設定しないといけないの?」
というのが問題で、速度などは二の次かなーと思います。


| ただ、[ruby-dev:21951] の、stat() 内でファイルを開いて閉じる方法だと、
| 
| http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/by_handle_file_information_str.asp
| の nFileIndexLow の項目に
| 
|   Note that this value is useful only while the file is open by at least one process.
|   If no processes have it open, the index may change the next time the file is opened.
| 
| とあるので、stat()の呼出しごとに ino が変わるかもしれなくてまずそうです。

それも問題の一つですね。
まあ、Cygwinの実装はそれなりに参考になると思います。


| >しかしまあ、これらはそれとして、[ruby-dev:21950]でわたなべさ
| >んがおっしゃっているように、ファイルの同一性を判定するメソッ
| >ドを作った方がいいかなあ、と私も思っています。どうでしょう?
| 
| 便利そうですけど、実装が難しそうですね。

st_devとst_inoを完璧に設定するよりは簡単じゃないかなあ。


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>