From: Jakub Narebski Date: Mon, 25 Sep 2006 23:58:41 GMT Subject: [PATCH 4/5] gitweb: Add git_url subroutine, and use it to quote full URLs Message-ID: <200609260158.42247.jnareb@gmail.com> In-Reply-To: <200609260153.08503.jnareb@gmail.com> Add git_url subroutine, which does what git_param did before commit a2f3db2f5de2a3667b0e038aa65e3e097e642e7d, and is used to quote full URLs, currently only $home_link. Signed-off-by: Jakub Narebski --- It will also be used in patch inspired by "[RFC][PATCH] gitweb: Make the Git logo link target to point to the homepage" Message-ID: <7virjes7dq.fsf@assigned-by-dhcp.cox.net> http://permalink.gmane.org/gmane.comp.version-control.git/27619 gitweb/gitweb.perl | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 7fce9a6..b51e061 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -446,6 +446,15 @@ sub esc_param { return $str; } +# quote unsafe chars in whole URL, so some charactrs cannot be quoted +sub esc_url { + my $str = shift; + $str =~ s/([^A-Za-z0-9\-_.~();\/;?:@&=])/sprintf("%%%02X", ord($1))/eg; + $str =~ s/\+/%2B/g; + $str =~ s/ /\+/g; + return $str; +} + # replace invalid utf8 character with SUBSTITUTION sequence sub esc_html { my $str = shift; @@ -1362,7 +1371,7 @@ EOF "" . "\"git\"" . "\n"; - print $cgi->a({-href => esc_param($home_link)}, $home_link_str) . " / "; + print $cgi->a({-href => esc_url($home_link)}, $home_link_str) . " / "; if (defined $project) { print $cgi->a({-href => href(action=>"summary")}, esc_html($project)); if (defined $action) { -- 1.4.2.1