ruby-changes:1859
From: ko1@a...
Date: 6 Sep 2007 22:59:46 +0900
Subject: [ruby-changes:1859] matz - Ruby:r13350 (trunk): * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of
matz 2007-09-06 22:59:37 +0900 (Thu, 06 Sep 2007) New Revision: 13350 Modified files: trunk/ChangeLog trunk/lib/fileutils.rb Log: * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of directories. * lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert. * lib/fileutils.rb (FileUtils::fu_update_option): ditto. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/fileutils.rb?r1=13350&r2=13349 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13350&r2=13349 Index: ChangeLog =================================================================== --- ChangeLog (revision 13349) +++ ChangeLog (revision 13350) @@ -1,3 +1,12 @@ +Thu Sep 6 22:57:01 2007 Yukihiro Matsumoto <matz@r...> + + * lib/fileutils.rb (FileUtils::Entry_::copy): prevent self copy of + directories. + + * lib/fileutils.rb (FileUtils::fu_each_src_dest0): use try_convert. + + * lib/fileutils.rb (FileUtils::fu_update_option): ditto. + Thu Sep 6 21:36:33 2007 Yukihiro Matsumoto <matz@r...> * include/ruby/oniguruma.h (OnigEncodingTypeST): add end parameter Index: lib/fileutils.rb =================================================================== --- lib/fileutils.rb (revision 13349) +++ lib/fileutils.rb (revision 13350) @@ -1224,6 +1224,9 @@ when file? copy_file dest when directory? + if !File.exist?(dest) and /^#{Regexp.quote(path)}/ =~ File.dirname(dest) + raise ArgumentError, "cannot copy directory %s to itself %s" % [path, dest] + end begin Dir.mkdir dest rescue @@ -1392,8 +1395,8 @@ private_module_function :fu_each_src_dest def fu_each_src_dest0(src, dest) #:nodoc: - if src.is_a?(Array) - src.each do |s| + if tmp = Array.try_convert(src) + tmp.each do |s| s = File.path(s) yield s, File.join(dest, File.basename(s)) end @@ -1436,8 +1439,8 @@ private_module_function :fu_check_options def fu_update_option(args, new) #:nodoc: - if args.last.is_a?(Hash) - args[-1] = args.last.dup.update(new) + if tmp = Hash.try_convert(args.last) + args[-1] = tmp.dup.update(new) else args.push new end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml