diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-27 08:33:47 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-27 08:33:47 +0000 |
commit | 14f6c8ca8ae785b14718cac1ad8891ca20e604e1 (patch) | |
tree | f32fe054b7581efa21879d9863fd5a6daf4656f8 /tool/rbinstall.rb | |
parent | 75b9218f25f4f63bf23fdc118eb40c5d712684ee (diff) | |
download | bundler-14f6c8ca8ae785b14718cac1ad8891ca20e604e1.tar.gz |
rbinstall.rb: reject empty files
* tool/rbinstall.rb (install_recursive): add maxdepth option.
* tool/rbinstall.rb (bin-comm): limit depth of bindir and reject empty
files. [ruby-core:55101] [Bug #8432]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/rbinstall.rb')
-rwxr-xr-x | tool/rbinstall.rb | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb index 4e24645ea2..1063facbae 100755 --- a/tool/rbinstall.rb +++ b/tool/rbinstall.rb @@ -198,6 +198,7 @@ def install_recursive(srcdir, dest, options = {}) opts = options.clone noinst = opts.delete(:no_install) glob = opts.delete(:glob) || "*" + maxdepth = opts.delete(:maxdepth) subpath = (srcdir.size+1)..-1 prune = [] skip = [] @@ -217,19 +218,21 @@ def install_recursive(srcdir, dest, options = {}) prune = path_matcher(prune) skip = path_matcher(skip) File.directory?(srcdir) or return rescue return - paths = [[srcdir, dest, true]] + paths = [[srcdir, dest, 0]] found = [] while file = paths.shift found << file file, d, dir = *file if dir + depth = dir + 1 + next if maxdepth and maxdepth < depth files = [] Dir.foreach(file) do |f| src = File.join(file, f) d = File.join(dest, dir = src[subpath]) stat = File.lstat(src) rescue next if stat.directory? - files << [src, d, true] if /\A\./ !~ f and !prune[dir] + files << [src, d, depth] if maxdepth != depth and /\A\./ !~ f and !prune[dir] elsif stat.symlink? # skip else @@ -453,7 +456,7 @@ install?(:local, :comm, :bin, :'bin-comm') do else trans = proc {|base| base} end - install_recursive(File.join(srcdir, "bin"), bindir) do |src, cmd| + install_recursive(File.join(srcdir, "bin"), bindir, :maxdepth => 1) do |src, cmd| cmd = cmd.sub(/[^\/]*\z/m) {|n| RbConfig.expand(trans[n])} shebang = '' @@ -462,6 +465,7 @@ install?(:local, :comm, :bin, :'bin-comm') do shebang = f.gets body = f.read end + shebang or raise "empty file - #{src}" if PROLOG_SCRIPT shebang.sub!(/\A(\#!.*?ruby\b)?/) {PROLOG_SCRIPT + ($1 || "#!ruby\n")} else |