山本です。

"U.Nakamura" <usa / garbagecollect.jp> wrote:
(2004/07/01 18:47)

>私の手元にも似たようなことをやるパッチがいちおうあったりします。
>UNCとかどうなるのかを調べたら投げようかと思ってました。

私もstat(),fstat()を自前で実装しようとしてました。(汗)

(S_IFSOCK は win32/win32.c の is_socket() が使えそうだと思っていました)

>個人的には10倍くらい遅くなっても許されると思いますが、devだけ
>対応しても意味はなくてinoもやんないと、と思います。
># inoについては[ruby-dev:21951]にTietewさんのパッチあり

じゅ、10倍ですか・・・stat() は Dir.glob でも使われているので、
2,3倍でも厳しいと思っていました。

ただ、[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 が変わるかもしれなくてまずそうです。

実は、st_dev も http://www.unix.org/single_unix_specification/ には「LAN で一意でなくては
ならない」と書いてあって、Windows のボリュームシリアルナンバーがこれを満たしているか
わからないんですが・・・

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

便利そうですけど、実装が難しそうですね。