diff options
| author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-25 15:05:14 +0000 |
|---|---|---|
| committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-06-25 15:05:14 +0000 |
| commit | af060855507b1fe5f8a3c5cceababc0568d0e2d8 (patch) | |
| tree | 78ff47950ba60094ec8e4351fb0926a2b1e7024d | |
| parent | e202a7bd29fab9da36f1d7a686479fe04885c06a (diff) | |
* lib/fileutils.rb (FileUtils#rmdir): Backport -p (parents). This
fixes "make clean".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@28436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | lib/fileutils.rb | 15 |
2 files changed, 17 insertions, 3 deletions
@@ -1,3 +1,8 @@ +Sat Jun 26 00:04:27 2010 Akinori MUSHA <knu@iDaemons.org> + + * lib/fileutils.rb (FileUtils#rmdir): Backport -p (parents). This + fixes "make clean". + Fri Jun 25 23:45:24 2010 Akinori MUSHA <knu@iDaemons.org> * common.mk (version.$(OBJEXT)): Fix build. (GNU make seems to diff --git a/lib/fileutils.rb b/lib/fileutils.rb index d3a623f808..2105a7721e 100644 --- a/lib/fileutils.rb +++ b/lib/fileutils.rb @@ -258,15 +258,24 @@ module FileUtils def rmdir(list, options = {}) fu_check_options options, OPT_TABLE['rmdir'] list = fu_list(list) - fu_output_message "rmdir #{list.join ' '}" if options[:verbose] + parents = options[:parents] + fu_output_message "rmdir #{parents ? '-p ' : ''}#{list.join ' '}" if options[:verbose] return if options[:noop] list.each do |dir| - Dir.rmdir dir.sub(%r</\z>, '') + begin + Dir.rmdir(dir = dir.sub(%r</\z>, '')) + if parents + until (parent = File.dirname(dir)) == '.' or parent == dir + Dir.rmdir(dir) + end + end + rescue Errno::ENOTEMPTY, Errno::ENOENT + end end end module_function :rmdir - OPT_TABLE['rmdir'] = [:noop, :verbose] + OPT_TABLE['rmdir'] = [:parents, :noop, :verbose] # # Options: force noop verbose |
