From: Rafael Garcia-Suarez Date: Tue, 26 Apr 2005 12:49:03 +0000 (+0000) Subject: Upgrade to CGI.pm 3.08 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=741ff09d3fcdc73149baf215916d82f587db7157;p=p5sagit%2Fp5-mst-13.2.git Upgrade to CGI.pm 3.08 p4raw-id: //depot/perl@24326 --- diff --git a/lib/CGI.pm b/lib/CGI.pm index 08adf4f..2346f75 100644 --- a/lib/CGI.pm +++ b/lib/CGI.pm @@ -18,8 +18,8 @@ use Carp 'croak'; # The most recent version and complete docs are available at: # http://stein.cshl.org/WWW/software/CGI/ -$CGI::revision = '$Id: CGI.pm,v 1.178 2005/03/14 16:30:20 lstein Exp $'; -$CGI::VERSION=3.07; +$CGI::revision = '$Id: CGI.pm,v 1.179 2005/04/07 22:40:37 lstein Exp $'; +$CGI::VERSION=3.08; # HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES. # UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING. @@ -177,20 +177,17 @@ $IIS++ if defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/; # Turn on special checking for Doug MacEachern's modperl if (exists $ENV{MOD_PERL}) { - eval "require mod_perl"; # mod_perl handlers may run system() on scripts using CGI.pm; # Make sure so we don't get fooled by inherited $ENV{MOD_PERL} - if (defined $mod_perl::VERSION) { - if ($mod_perl::VERSION >= 1.99) { - $MOD_PERL = 2; - require Apache::Response; - require Apache::RequestRec; - require Apache::RequestUtil; - require APR::Pool; - } else { - $MOD_PERL = 1; - require Apache; - } + if ($ENV{MOD_PERL_API_VERSION} == 2) { + $MOD_PERL = 2; + require Apache2::Response; + require Apache2::RequestRec; + require Apache2::RequestUtil; + require APR::Pool; + } else { + $MOD_PERL = 1; + require Apache; } } @@ -330,7 +327,7 @@ sub new { if (ref($initializer[0]) && (UNIVERSAL::isa($initializer[0],'Apache') || - UNIVERSAL::isa($initializer[0],'Apache::RequestRec') + UNIVERSAL::isa($initializer[0],'Apache2::RequestRec') )) { $self->r(shift @initializer); } @@ -339,14 +336,16 @@ sub new { $self->upload_hook(shift @initializer, shift @initializer); } if ($MOD_PERL) { - $self->r(Apache->request) unless $self->r; - my $r = $self->r; if ($MOD_PERL == 1) { + $self->r(Apache->request) unless $self->r; + my $r = $self->r; $r->register_cleanup(\&CGI::_reset_globals); } else { # XXX: once we have the new API # will do a real PerlOptions -SetupEnv check + $self->r(Apache2::RequestUtil->request) unless $self->r; + my $r = $self->r; $r->subprocess_env unless exists $ENV{REQUEST_METHOD}; $r->pool->cleanup_register(\&CGI::_reset_globals); } diff --git a/lib/CGI/Carp.pm b/lib/CGI/Carp.pm index 4c4bc70..94033d6 100644 --- a/lib/CGI/Carp.pm +++ b/lib/CGI/Carp.pm @@ -465,17 +465,20 @@ END ; if ($mod_perl) { - require mod_perl; - if ($mod_perl::VERSION >= 1.99) { + my $r; + if ($ENV{MOD_PERL_API_VERSION}) { $mod_perl = 2; - require Apache::RequestRec; - require Apache::RequestIO; - require Apache::RequestUtil; + require Apache2::RequestRec; + require Apache2::RequestIO; + require Apache2::RequestUtil; require APR::Pool; require ModPerl::Util; - require Apache::Response; + require Apache2::Response; + $r = Apache2::RequestUtil->request; + } + else { + $r = Apache->request; } - my $r = Apache->request; # If bytes have already been sent, then # we print the message out directly. # Otherwise we make a custom error diff --git a/lib/CGI/Changes b/lib/CGI/Changes index 7a6baf8..9b22a52 100644 --- a/lib/CGI/Changes +++ b/lib/CGI/Changes @@ -1,3 +1,7 @@ + Version 3.08 + 1. update support for mod_perl 2.0. versions prior to + mod_perl 1.999_22 (2.0.0-RC5) are no longer supported. + Version 3.07 1. Fixed typo in mod_perl detection. diff --git a/lib/CGI/Cookie.pm b/lib/CGI/Cookie.pm index a900ec0..164b5ec 100644 --- a/lib/CGI/Cookie.pm +++ b/lib/CGI/Cookie.pm @@ -23,18 +23,13 @@ use overload '""' => \&as_string, # Turn on special checking for Doug MacEachern's modperl my $MOD_PERL = 0; if (exists $ENV{MOD_PERL}) { - eval "require mod_perl"; - if (defined $mod_perl::VERSION) { - my $float = $mod_perl::VERSION; - $float += 0; - if ($float >= 1.99) { + if ($ENV{MOD_PERL_API_VERSION} == 2) { $MOD_PERL = 2; - require Apache::RequestUtil; - eval "require APR::Table"; # Changing APIs? I hope not. - } else { - $MOD_PERL = 1; - require Apache; - } + require Apache2::RequestUtil; + require APR::Table; + } else { + $MOD_PERL = 1; + require Apache; } } @@ -74,7 +69,9 @@ sub fetch { sub get_raw_cookie { my $r = shift; - $r ||= eval { Apache->request() } if $MOD_PERL; + $r ||= eval { $MOD_PERL == 2 ? + Apache2::RequestUtil->request() : + Apache->request } if $MOD_PERL; if ($r) { $raw_cookie = $r->headers_in->{'Cookie'}; } else { diff --git a/lib/CGI/Pretty.pm b/lib/CGI/Pretty.pm index d824a02..2147143 100644 --- a/lib/CGI/Pretty.pm +++ b/lib/CGI/Pretty.pm @@ -148,11 +148,12 @@ sub new { my $this = $class->SUPER::new( @_ ); if ($CGI::MOD_PERL) { - my $r = Apache->request; if ($CGI::MOD_PERL == 1) { + my $r = Apache->request; $r->register_cleanup(\&CGI::Pretty::_reset_globals); } else { + my $r = Apache2::RequestUtil->request; $r->pool->cleanup_register(\&CGI::Pretty::_reset_globals); } }