gitweb: Sort CGI parameters returned by href()
[gitweb.git] / gitweb / gitweb.perl
index 1c8a2ebe1509a89e20a4794767d5f16796f20492..50083e3011d145a25c7c56d85d75dd04ef15adf3 100755 (executable)
@@ -267,7 +267,9 @@ sub feature_snapshot {
 ## action links
 
 sub href(%) {
-       my %mapping = (
+       my %params = @_;
+
+       my @mapping = (
                action => "a",
                project => "p",
                file_name => "f",
@@ -278,18 +280,18 @@ (%)
                page => "pg",
                searchtext => "s",
        );
+       my %mapping = @mapping;
 
-       my %params = @_;
        $params{"project"} ||= $project;
 
-       my $href = "$my_uri?";
-       $href .= esc_param( join(";",
-               map {
-                       "$mapping{$_}=$params{$_}" if defined $params{$_}
-               } keys %params
-       ) );
-
-       return $href;
+       my @result = ();
+       for (my $i = 0; $i < @mapping; $i += 2) {
+               my ($name, $symbol) = ($mapping[$i], $mapping[$i+1]);
+               if (defined $params{$name}) {
+                       push @result, $symbol . "=" . esc_param($params{$name});
+               }
+       }
+       return "$my_uri?" . join(';', @result);
 }