summaryrefslogtreecommitdiff
path: root/lib/fileutils.rb
diff options
context:
space:
mode:
authoreban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-07-29 10:24:28 +0000
committereban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-07-29 10:24:28 +0000
commit3fbbec0c39f5a166e3bd5016c6dfaf30c26bb498 (patch)
treed94e9e48b07fcc6c82e908093d9c515e9cb9bf01 /lib/fileutils.rb
parent23301726b08691c0f2706ad9d340da62a0902cc6 (diff)
* lib/fileutils.rb (install): support preserve timestamp.
* instruby.rb (install): use FileUtils::install preserve mode. * lib/un.rb: new. % ruby -run -e cp -- -p foo bar * lib/mkmf.rb: use un.rb instead of ftools.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/fileutils.rb')
-rw-r--r--lib/fileutils.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 0efd204394..d6714229a9 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -633,15 +633,17 @@ module FileUtils
# FileUtils.install 'lib.rb', '/usr/local/lib/ruby/site_ruby', :verbose => true
#
def install( src, dest, options = {} )
- fu_check_options options, :mode, :noop, :verbose
- fu_output_message "install -c#{options[:mode] ? (' -m 0%o' % options[:mode]) : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
+ fu_check_options options, :mode, :preserve, :noop, :verbose
+ 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|
unless FileTest.exist?(d) and compare_file(s,d)
- remove_file d, true
- copy_file s, d
- File.chmod options[:mode], d if options[:mode]
+ fu_preserve_attr(options[:preserve], s, d) {
+ remove_file d, true
+ copy_file s, d
+ }
+ File.chmod options[:mode], d if options[:mode]
end
end
end