summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorayumin <ayumin@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-06-03 14:20:15 +0000
committerayumin <ayumin@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-06-03 14:20:15 +0000
commitcef3f2ebd45c10823a60a70448b8400accbdaf38 (patch)
tree8799f66bfc97956b8b13f474dbef61b67321b5cd /lib
parent482f0e6b97330a1321bccdc5c80b988b5068a5b8 (diff)
* lib/fileutils.rb: fix behavior when mkdir/mkdir_p accepted "/".
* test/fileutils/test_fileutils.rb: add test for above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/fileutils.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 8daf923c78..7f14f138d9 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -154,6 +154,11 @@ module FileUtils
end
module_function :uptodate?
+ def remove_tailing_slash(dir)
+ dir == '/' ? dir : dir.chomp(?/)
+ end
+ private_module_function :remove_tailing_slash
+
#
# Options: mode noop verbose
#
@@ -200,7 +205,7 @@ module FileUtils
fu_output_message "mkdir -p #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}" if options[:verbose]
return *list if options[:noop]
- list.map {|path| path.chomp(?/) }.each do |path|
+ list.map {|path| remove_tailing_slash(path)}.each do |path|
# optimize for the most common case
begin
fu_mkdir path, options[:mode]
@@ -237,7 +242,7 @@ module FileUtils
OPT_TABLE['makedirs'] = [:mode, :noop, :verbose]
def fu_mkdir(path, mode) #:nodoc:
- path = path.chomp(?/)
+ path = remove_tailing_slash(path)
if mode
Dir.mkdir path, mode
File.chmod mode, path