From 14f6c8ca8ae785b14718cac1ad8891ca20e604e1 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 27 May 2013 08:33:47 +0000 Subject: 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 --- tool/rbinstall.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'tool') 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 -- cgit v1.2.3