2 # Copyright 2011 The Go Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style
4 # license that can be found in the LICENSE file.
6 # Test script run as a child process under cgi_test.go
12 my $params = $q->Vars;
14 if ($params->{"loc"}) {
15 print "Location: $params->{loc}\r\n\r\n";
20 $NL = "\n" if $params->{mode} eq "NL";
26 # With carriage returns
27 $p->("Content-Type: text/html");
28 $p->("X-CGI-Pid: $$");
29 $p->("X-Test-Header: X-Test-Value");
32 if ($params->{"bigresponse"}) {
34 print "A" x 1024, "\n";
39 print "test=Hello CGI\n";
41 foreach my $k (sort keys %$params) {
42 print "param-$k=$params->{$k}\n";
45 foreach my $k (sort keys %ENV) {
46 my $clean_env = $ENV{$k};
47 $clean_env =~ s/[\n\r]//g;
48 print "env-$k=$clean_env\n";
51 # NOTE: don't call getcwd() for windows.
52 # msys return /c/go/src/... not C:\go\...
54 if ($^O eq 'MSWin32' || $^O eq 'msys') {
55 my $cmd = $ENV{'COMSPEC'} || 'c:\\windows\\system32\\cmd.exe';
65 # A minimal version of CGI.pm, for people without the perl-modules
66 # package installed. (CGI.pm used to be part of the Perl core, but
67 # some distros now bundle perl-base and perl-modules separately...)
72 return bless {}, $class;
78 if ($ENV{CONTENT_LENGTH}) {
79 $pairs = do { local $/; <STDIN> };
81 $pairs = $ENV{QUERY_STRING};
84 foreach my $kv (split(/&/, $pairs)) {
85 my ($k, $v) = split(/=/, $kv, 2);
86 $vars->{_urldecode($k)} = _urldecode($v);
94 $v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;