Re-enable spec/library for full CI runs.
[rbx.git] / lib / webrick / httpservlet / cgi_runner.rb
blob1069a68d583214aa7cc18cce0b283c33f6bfd792
2 # cgi_runner.rb -- CGI launcher.
4 # Author: IPR -- Internet Programming with Ruby -- writers
5 # Copyright (c) 2000 TAKAHASHI Masayoshi, GOTOU YUUZOU
6 # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
7 # reserved.
9 # $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $
11 def sysread(io, size)
12   buf = ""
13   while size > 0
14     tmp = io.sysread(size)
15     buf << tmp
16     size -= tmp.size
17   end
18   return buf
19 end
21 STDIN.binmode
23 buf = ""
24 len = sysread(STDIN, 8).to_i
25 out = sysread(STDIN, len)
26 STDOUT.reopen(open(out, "w"))
28 len = sysread(STDIN, 8).to_i
29 err = sysread(STDIN, len)
30 STDERR.reopen(open(err, "w"))
32 len  = sysread(STDIN, 8).to_i
33 dump = sysread(STDIN, len)
34 hash = Marshal.restore(dump)
35 ENV.keys.each{|name| ENV.delete(name) }
36 hash.each{|k, v| ENV[k] = v if v }
38 dir = File::dirname(ENV["SCRIPT_FILENAME"])
39 Dir::chdir dir
41 if interpreter = ARGV[0]
42   exec(interpreter, ENV["SCRIPT_FILENAME"])
43   # NOTREACHED
44 end
45 exec ENV["SCRIPT_FILENAME"]