diff options
Diffstat (limited to 'lib/webrick/httpservlet/cgi_runner.rb')
| -rw-r--r-- | lib/webrick/httpservlet/cgi_runner.rb | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/webrick/httpservlet/cgi_runner.rb b/lib/webrick/httpservlet/cgi_runner.rb index 1069a68d58..0398c16749 100644 --- a/lib/webrick/httpservlet/cgi_runner.rb +++ b/lib/webrick/httpservlet/cgi_runner.rb @@ -1,3 +1,4 @@ +# frozen_string_literal: false # # cgi_runner.rb -- CGI launcher. # @@ -13,21 +14,20 @@ def sysread(io, size) while size > 0 tmp = io.sysread(size) buf << tmp - size -= tmp.size + size -= tmp.bytesize end return buf end STDIN.binmode -buf = "" len = sysread(STDIN, 8).to_i out = sysread(STDIN, len) -STDOUT.reopen(open(out, "w")) +STDOUT.reopen(File.open(out, "w")) len = sysread(STDIN, 8).to_i err = sysread(STDIN, len) -STDERR.reopen(open(err, "w")) +STDERR.reopen(File.open(err, "w")) len = sysread(STDIN, 8).to_i dump = sysread(STDIN, len) @@ -38,8 +38,10 @@ hash.each{|k, v| ENV[k] = v if v } dir = File::dirname(ENV["SCRIPT_FILENAME"]) Dir::chdir dir -if interpreter = ARGV[0] - exec(interpreter, ENV["SCRIPT_FILENAME"]) +if ARGV[0] + argv = ARGV.dup + argv << ENV["SCRIPT_FILENAME"] + exec(*argv) # NOTREACHED end exec ENV["SCRIPT_FILENAME"] |
