Add $r variable which holds Apache::RequestRec if script is run under mod_perl (if $ENV{MOD_PERL} is defined). It is used as argument to constructor of CGI object (needs CGI module version at least 2.93). Following advice from CGI(3pm) man page, precompile all CGI routines for mod_perl. Use $r->path_info() instead of $ENV{"PATH_INFO"}. All this makes gitweb slightly faster under mod_perl. Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- gitweb/gitweb.perl | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 040ee71..ebe59b8 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -18,11 +18,18 @@ use File::Find qw(); use File::Basename qw(basename); binmode STDOUT, ':utf8'; -our $cgi = new CGI; +# mod_perl request +my $r; +$r = shift @_ if $ENV{MOD_PERL}; + +our $cgi = new CGI($r); our $version = "++GIT_VERSION++"; our $my_url = $cgi->url(); our $my_uri = $cgi->url(-absolute => 1); +# speeding up mod_perl and FastCGI (later) +$cgi->compile() if $r; + # core git executable to use # this can just be "git" if your webserver has a sensible PATH our $GIT = "++GIT_BINDIR++/git"; @@ -364,7 +371,7 @@ if (defined $searchtype) { # now read PATH_INFO and use it as alternative to parameters sub evaluate_path_info { return if defined $project; - my $path_info = $ENV{"PATH_INFO"}; + my $path_info = $r ? $r->path_info() : $ENV{"PATH_INFO"}; return if !$path_info; $path_info =~ s,^/+,,; return if !$path_info; -- 1.4.4.1 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html