]> mj.ucw.cz Git - libucw.git/blobdiff - lib/perl/CGI.pm
Better avoid the brain-dead encoding " " as "+" when generating URL's.
[libucw.git] / lib / perl / CGI.pm
index 286bca52f7a4fa0c5636de9be6891b3b68e8fcd2..024a14518a64d6f727a1f2a8d63769cb5fada6bb 100644 (file)
@@ -23,8 +23,7 @@ BEGIN {
 
 sub url_escape($) {
        my $x = shift @_;
 
 sub url_escape($) {
        my $x = shift @_;
-       $x =~ s/([^-\$_.+!*'(),0-9A-Za-z\x80-\xff ])/"%".unpack('H2',$1)/ge;
-       $x =~ s/ /+/g;
+       $x =~ s/([^-\$_.!*'(),0-9A-Za-z\x80-\xff])/"%".unpack('H2',$1)/ge;
        return $x;
 }
 
        return $x;
 }
 
@@ -42,7 +41,7 @@ our $arg_table;
 sub parse_arg_string($) {
        my ($s) = @_;
        $s =~ s/\s+//;
 sub parse_arg_string($) {
        my ($s) = @_;
        $s =~ s/\s+//;
-       foreach $_ (split /&/,$s) {
+       foreach $_ (split /[&:]/,$s) {
                (/^([^=]+)=(.*)$/) or next;
                my $arg = $arg_table->{$1} or next;
                $_ = $2;
                (/^([^=]+)=(.*)$/) or next;
                my $arg = $arg_table->{$1} or next;
                $_ = $2;
@@ -106,7 +105,7 @@ sub make_out_args($) {
 sub self_ref(@) {
        my %h = @_;
        my $out = make_out_args(\%h);
 sub self_ref(@) {
        my %h = @_;
        my $out = make_out_args(\%h);
-       return "?" . join('&', map { "$_=" . url_escape($out->{$_}) } sort keys %$out);
+       return "?" . join(':', map { "$_=" . url_escape($out->{$_}) } sort keys %$out);
 }
 
 sub self_form(@) {
 }
 
 sub self_form(@) {