Make possible to run gitweb under mod_perl without need to set up CGI environmental variables (i.e. "PerlOptions -SetupEnv" in mod_perl 2.0, "PerlSetupEnv Off" in mod_perl 1.0). Actually ModPerl::Registry / Apache::Registry populates %ENV hash, without need to actually set environmental variables. Pass the request variable $r to CGI constructor if CGI.pm module is new enough (at least CGI version 2.93, and at least 3.11 for mod_perl 2.0). Replace $ENV{'PATH_INFO'} by $r->path_info() if we use mod_perl. Replace $ENV{'SERVER_NAME'} by $r->server()->server_hostname() if we use mod_perl. Uniquify using of %ENV to $ENV{'NAME'}, while at it. Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- This patch appears to be unnecessary, at least for now, because mod_perl Registry populates %ENV hash (and does not need to set envirionmental variables). Still, it prepares the way for future running gitweb as mod_perl handler, and not under Registry. Perhaps the cleanup part of this patch should be put into separate patch... gitweb/gitweb.perl | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 9983e9e..2900ae6 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -32,11 +32,16 @@ BEGIN { # use appropriate mod_perl modules (conditional use) if (MP_GEN == 2) { require Apache2::RequestRec; + require Apache2::ServerRec; + require Apache2::Response; require Apache2::Const; + Apache2::RequestRec->import(); + Apache2::ServerRec->import(); Apache2::Const->import(-compile => qw(:common :http)); } elsif (MP_GEN == 1) { require Apache; require Apache::Constants; + import Apache; Apache::Constants->import(qw(:common :http)); } @@ -48,7 +53,15 @@ BEGIN { my $r; $r = shift @_ if MP_GEN; -our $cgi = new CGI; +our $cgi; +if ((MP_GEN == 1 && $CGI::VERSION >= 2.93) || + (MP_GEN == 2 && $CGI::VERSION >= 3.11)) { + # CGI.pm is new enough + $cgi = new CGI($r); +} else { + $cgi = new CGI; +} + our $version = "++GIT_VERSION++"; our $my_url = $cgi->url(); our $my_uri = $cgi->url(-absolute => 1); @@ -70,7 +83,8 @@ our $home_link_str = "++GITWEB_HOME_LINK_STR++"; # name of your site or organization to appear in page titles # replace this with something more descriptive for clearer bookmarks our $site_name = "++GITWEB_SITENAME++" - || ($ENV{'SERVER_NAME'} || "Untitled") . " Git"; + || (($r ? $r->server()->server_hostname() : $ENV{'SERVER_NAME'}) + || "Untitled") . " Git"; # filename of html text to include at top of each page our $site_header = "++GITWEB_SITE_HEADER++"; @@ -403,7 +417,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.3 - 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