summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-12 00:19:52 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-12 00:19:52 +0000
commit3a2f5d9cf7f2aa1ef06036e70cbf5c0203a69e57 (patch)
tree2e8b7eef4bb07ce116bf5ac5c6e3b08357724f47
parenta3dde7df529dc459cbe4f42df2a836652b3469be (diff)
* lib/fileutils.rb (fu_each_src_dest): ensure src is accessible.
* lib/fileutils.rb (fu_same): use File.identical? to get rid of exceptions. [ruby-core:28141] * lib/fileutils.rb (fu_have_st_ino): no longer used. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--lib/fileutils.rb20
2 files changed, 11 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 10698799f8..8b6bdf5c13 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,11 @@
-Mon Apr 12 09:18:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 12 09:19:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/fileutils.rb (fu_each_src_dest): ensure src is accessible.
+
+ * lib/fileutils.rb (fu_same): use File.identical? to get rid of
+ exceptions. [ruby-core:28141]
+
+ * lib/fileutils.rb (fu_have_st_ino): no longer used.
* lib/fileutils.rb (fu_have_st_ino): check if required method is
defined, instead of platform name.
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index bdf5a1048c..cfca8b91ec 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -840,10 +840,9 @@ module FileUtils
fu_check_options options, OPT_TABLE['install']
fu_output_message "install -c#{options[:preserve] && ' -p'}#{options[:mode] ? (' -m 0%o' % options[:mode]) : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
return if options[:noop]
- fu_each_src_dest(src, dest) do |s, d|
+ fu_each_src_dest(src, dest) do |s, d, st|
unless File.exist?(d) and compare_file(s, d)
remove_file d, true
- st = File.stat(s) if options[:preserve]
copy_file s, d
File.utime st.atime, st.mtime, d if options[:preserve]
File.chmod options[:mode], d if options[:mode]
@@ -1401,7 +1400,7 @@ module FileUtils
def fu_each_src_dest(src, dest) #:nodoc:
fu_each_src_dest0(src, dest) do |s, d|
raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d)
- yield s, d
+ yield s, d, File.stat(s)
end
end
private_module_function :fu_each_src_dest
@@ -1424,23 +1423,10 @@ module FileUtils
private_module_function :fu_each_src_dest0
def fu_same?(a, b) #:nodoc:
- if fu_have_st_ino?
- st1 = File.stat(a)
- st2 = File.stat(b)
- st1.dev == st2.dev and st1.ino == st2.ino
- else
- File.expand_path(a) == File.expand_path(b)
- end
- rescue Errno::ENOENT
- return false
+ File.identical?(a, b)
end
private_module_function :fu_same?
- def fu_have_st_ino? #:nodoc:
- File::Stat.method_defined?(:ino)
- end
- private_module_function :fu_have_st_ino?
-
def fu_check_options(options, optdecl) #:nodoc:
h = options.dup
optdecl.each do |opt|