Line | |
---|
1 | #
|
---|
2 | # cgi_runner.rb -- CGI launcher.
|
---|
3 | #
|
---|
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.
|
---|
8 | #
|
---|
9 | # $IPR: cgi_runner.rb,v 1.9 2002/09/25 11:33:15 gotoyuzo Exp $
|
---|
10 |
|
---|
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
|
---|
20 |
|
---|
21 | STDIN.binmode
|
---|
22 |
|
---|
23 | buf = ""
|
---|
24 | len = sysread(STDIN, 8).to_i
|
---|
25 | out = sysread(STDIN, len)
|
---|
26 | STDOUT.reopen(open(out, "w"))
|
---|
27 |
|
---|
28 | len = sysread(STDIN, 8).to_i
|
---|
29 | err = sysread(STDIN, len)
|
---|
30 | STDERR.reopen(open(err, "w"))
|
---|
31 |
|
---|
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 }
|
---|
37 |
|
---|
38 | dir = File::dirname(ENV["SCRIPT_FILENAME"])
|
---|
39 | Dir::chdir dir
|
---|
40 |
|
---|
41 | if interpreter = ARGV[0]
|
---|
42 | exec(interpreter, ENV["SCRIPT_FILENAME"])
|
---|
43 | # NOTREACHED
|
---|
44 | end
|
---|
45 | exec ENV["SCRIPT_FILENAME"]
|
---|
Note:
See
TracBrowser
for help on using the repository browser.