あおきです。

  In mail "[ruby-dev:10597] Re: fileutils.rb (2)"
    matz / zetabits.com (Yukihiro Matsumoto) wrote:

> まつもと ゆきひろです

> |fileutils.rb 修正一版のパッチです。
> 
> 些細な点ですが

> ループの中でnewの存在チェックをしなくても良いんではないかと。
> あるいは
> 
> |-    def is_older?( old, *fnames )
> |+    def oldest?( old, *fnames )
> |       fnames.each do |old|
> |         return true  unless FileTest.exist? old
> |         return false unless File.ctime(new) >= File.ctime(old)
> 
> のようにoldの存在チェックをしたかった?

ん? …… old の定義が二つある? (そして new がない?)

修正二版です。他にも大々的にバグってました。
-------------------------------------------------------------------
あおきみねろう

Index: fileutils.rb =================================================================== RCS file: /home/aamine/cvs/etc/fileutils.rb,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- fileutils.rb 2000/08/06 17:59:53 1.3 +++ fileutils.rb 2000/08/07 17:43:57 1.4 @@ -148,9 +148,12 @@ def newest?( new, *fnames ) + return false unless FileTest.exist? new + t = File.ctime(new) fnames.each do |old| - return false unless FileTest.exist? new - return false unless File.ctime(new) >= File.ctime(old) + if FileTest.exist? old then + return false unless t >= File.ctime(old) + end end true end @@ -158,9 +161,12 @@ modfunc_alias :uptodate?, :newest? def oldest?( old, *fnames ) - fnames.each do |old| - return true unless FileTest.exist? old - return false unless File.ctime(new) >= File.ctime(old) + return true unless FileTest.exist? old + t = File.ctime(old) + fnames.each do |new| + if FileTest.exist? new then + return false unless File.ctime(new) >= t + end end true end @@ -189,6 +195,8 @@ end end + modfunc_alias :mkpath, :mkdir_p + def ln( *args ) FUPrivate.each_src_dest( args ) do |from, to| @@ -593,14 +601,16 @@ class << self def delegate( fname, exec ) + fname = fname.id2name str = %- - def #{fname.id2name}( *args, &block ) + def #{fname}( *args, &block ) #{if exec then - 'FileUtils::Normal.' + fname.id2name + '( *args, &block )' + 'FileUtils::Normal.' + fname + '( *args, &block )' else '' end} end + module_function :#{fname} - module_eval str, __FILE__, @line @line += 1 @@ -616,6 +626,7 @@ delegate :oldest? ,true delegate :mkdir ,false delegate :mkdir_p ,false + delegate :mkpath ,false delegate :ln ,false delegate :ln_s ,false delegate :cp ,false