]> mj.ucw.cz Git - libucw.git/blobdiff - lib/perl/CGI.pm
If `-S' or `-C' is given after some other options (i.e., the config file
[libucw.git] / lib / perl / CGI.pm
index a6b5302effe290ae3c88374e20f74a73fcb5f96f..aeb6c50504a52a4c8bdda50fa4e11cd1d087ebd5 100644 (file)
@@ -1,6 +1,7 @@
 #      Poor Man's CGI Module for Perl
 #
 #      (c) 2002 Martin Mares <mj@ucw.cz>
+#      Slightly modified by Tomas Valla <tom@ucw.cz>
 #
 #      This software may be freely distributed and used according to the terms
 #      of the GNU Lesser General Public License.
@@ -38,8 +39,6 @@ sub html_escape($) {
 
 our $arg_table;
 
-our $value_separator = "&";
-
 sub parse_arg_string($) {
        my ($s) = @_;
        $s =~ s/\s+//;
@@ -55,10 +54,12 @@ sub parse_arg_string($) {
                if (my $rx = $arg->{'check'}) {
                        if (!/^$rx$/) { $_ = $arg->{'default'}; }
                }
-               if (${$arg->{'var'}} eq $arg->{'default'}) {
+               
+               my $r = ref($arg->{'var'});
+               if ($r eq 'SCALAR') {
                        ${$arg->{'var'}} = $_;
-               } else {
-                       ${$arg->{'var'}} .= $value_separator.$_;
+               } elsif ($r eq 'ARRAY') {
+                       push @{$arg->{'var'}}, $_;
                }
        }
 }
@@ -66,8 +67,13 @@ sub parse_arg_string($) {
 sub parse_args($) {
        $arg_table = shift @_;
        foreach my $a (values %$arg_table) {
+               my $r = ref($a->{'var'});
                defined($a->{'default'}) or $a->{'default'}="";
-               ${$a->{'var'}} = $a->{'default'};
+               if ($r eq 'SCALAR') {
+                       ${$a->{'var'}} = $a->{'default'};
+               } elsif ($r eq 'ARRAY') {
+                       @{$a->{'var'}} = ();
+               }
        }
        defined $ENV{"GATEWAY_INTERFACE"} or die "Not called as a CGI script";
        my $method = $ENV{"REQUEST_METHOD"};