Allow cgi access to projects with a '+' in the name
commit564ee8cc151be8e058e3d89230b08ee4acc176a0
authorKyle J. McKay <mackyle@gmail.com>
Mon, 17 Feb 2014 06:01:43 +0000 (16 22:01 -0800)
committerKyle J. McKay <mackyle@gmail.com>
Mon, 17 Feb 2014 06:01:43 +0000 (16 22:01 -0800)
treea7bcf3441424f0937446251c198143712fad512d
parent7ed2874407d8dd68016aacbd1ed43e1b5861b4de
Allow cgi access to projects with a '+' in the name

Projects with a '+' in the name have been allowed for some time.

Starting with 9aa4b64c they have even been shown correctly in the
project list.

However, all the *.cgi links that include a ?name=proj query string
have failed to URL escape the '+'.  This results in the '+' getting
processed by CGI::Util::unescape and turned into a ' '.  And since
a ' ' is not valid in a project name the cgi scripts complain and die.

It's certainly possible to manually correct the URL replacing the '+'
with a '%2B' and access the cgi scripts that way, but that's very
clumsy.

Replace any '+' characters in ?name=proj query strings with '%2B' so
that the links work properly.  CGI::Util::escape is NOT used because
that would also turn '/' into '%2F' which is unnecessary and also
ugly.

Note that it's NOT necessary to escape any '+' characters when they
appear in a path such as '/w/example+project.git' because those are
not subject to the '+' turns into ' ' problem.
cgi/delproj.cgi
cgi/editproj.cgi
cgi/mirrorproj.cgi
cgi/pwproj.cgi
cgi/regproj.cgi
git.git
gitweb/gitweb_config.perl
taskd/clone.sh