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