From: Motoyuki Kasahara Date: 1998-12-15T15:43:29+09:00 Subject: [ruby-list:11354] finder (Re: find.rb bug(?) fix) 笠原です。 * From: WATANABE Tetsuya * Date: Mon, 14 Dec 1998 20:13:05 +0900 > 私もはじめは同じことを考えたのですが、find.rb で > これをやってしまうと、シンボリックリンクを自分で > 判断できなくなります。このため、ループ回避は 私もちょうど find.rb がシンボリックリンクを常に追ってしまうのに困って、 `finder' という別の実装を作ってしまいました。 http://www.sra.co.jp/people/m-kasahr/ruby/finder/finder-1.0.tar.gz それから、UNIX の find コマンドにある `-depth'、`-follow'、`-xdev' オプ ションと同等の機能を用意しました。たとえば、 Finder.new('depth', 'xdev').find(*ARGV) { |name, stat| print name, "\n" } のようにします。 ただし、内部で File.stat, File.lstat の返してくる構造体の dev, ino メ ンバを参照しているので、Windows 上などでは使えないと思います。 それから、同じく構造体の mode メンバを検査する関数やメソッド (S_ISREG, S_ISDIR など) が Ruby にはないようなので、StatMacros というモジュール を作って mode の検査メソッドを定義するようにしました。これは非常に小さ いですが C で書いた拡張モジュールでして、試しに mkmf.rb ではなく automake + libtool を使ってみました。([ruby-dev 3812] で言っていたのは、 これのことです。) ______________________________________________________________________ 笠原 基之(かさはら もとゆき)