dougm 00/09/28 12:59:47 Modified: . Changes ToDo lib/Apache PerlRun.pm RegistryBB.pm RegistryNG.pm Log: change Apache::PerlRun's Apache class relationship from is-a to has-a Revision Changes Path 1.537 +3 -0 modperl/Changes Index: Changes =================================================================== RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.536 retrieving revision 1.537 diff -u -r1.536 -r1.537 --- Changes 2000/09/28 19:28:27 1.536 +++ Changes 2000/09/28 19:59:23 1.537 @@ -10,6 +10,9 @@ =item 1.24_01-dev +change Apache::PerlRun's Apache class relationship from is-a to has-a +[Ken Williams <[EMAIL PROTECTED]>] + Apache::SubRequest->run(1) allows ap_send_http_headers() to output for subrequests 1.261 +3 -3 modperl/ToDo Index: ToDo =================================================================== RCS file: /home/cvs/modperl/ToDo,v retrieving revision 1.260 retrieving revision 1.261 diff -u -r1.260 -r1.261 --- ToDo 2000/09/28 19:28:28 1.260 +++ ToDo 2000/09/28 19:59:25 1.261 @@ -40,9 +40,6 @@ - replace Apache::StatINC with Apache::ModuleReload? -- ken w's Apache::PerlRun patch to change Apache class relationship - from is-a to has-a - - ken w's Apache::test patch - CHECK blocks? [Michael J Schout <[EMAIL PROTECTED]>] @@ -118,6 +115,9 @@ --------------------------------------------------------------------------- MISC BUGS --------------------------------------------------------------------------- + +- Apache->request($r) digs the request_rec out of $r regardless of the + type/class, e.g. Apache->request(bless {r => $r}, 'My::Apache') - $r->finfo problem with HTML::Mason::ApacheHandler [Shane Adams <[EMAIL PROTECTED]>] 1.31 +30 -37 modperl/lib/Apache/PerlRun.pm Index: PerlRun.pm =================================================================== RCS file: /home/cvs/modperl/lib/Apache/PerlRun.pm,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- PerlRun.pm 2000/09/28 16:35:52 1.30 +++ PerlRun.pm 2000/09/28 19:59:36 1.31 @@ -19,32 +19,22 @@ $Debug ||= 0; my $Is_Win32 = $^O eq "MSWin32"; -@Apache::PerlRun::ISA = qw(Apache); - sub new { my($class, $r) = @_; - return $r unless ref($r) eq "Apache"; - if(ref $r) { - $r->request($r); - } - else { - $r = Apache->request; - } my $filename = $r->filename; $r->warn("Apache::PerlRun->new for $filename in process $$") if $Debug && $Debug & 4; - bless { - '_r' => $r, - }, $class; + return bless {r=>$r}, $class; } sub can_compile { my($pr) = @_; - my $filename = $pr->filename; - if (-r $filename && -s _) { - if (!($pr->allow_options & OPT_EXECCGI)) { - $pr->log_reason("Options ExecCGI is off in this directory", + my $r = $pr->{r}; + my $filename = $r->filename; + if (-r $r->finfo && -s _) { + if (!($r->allow_options & OPT_EXECCGI)) { + $r->log_reason("Options ExecCGI is off in this directory", $filename); return FORBIDDEN; } @@ -52,7 +42,7 @@ return DECLINED; } unless (-x _ or $Is_Win32) { - $pr->log_reason("file permissions deny server execution", + $r->log_reason("file permissions deny server execution", $filename); return FORBIDDEN; } @@ -65,8 +55,7 @@ } sub mark_line { - my($pr) = @_; - my $filename = $pr->filename; + my $filename = shift->{r}->filename; return $Apache::Registry::MarkLine ? "\n#line 1 $filename\n" : ""; } @@ -115,26 +104,28 @@ sub compile { my($pr, $eval) = @_; $eval ||= $pr->{'sub'}; - $pr->clear_rgy_endav; - $pr->log_error("Apache::PerlRun->compile") if $Debug && $Debug & 4; + my $r = $pr->{r}; + $r->clear_rgy_endav; + $r->log_error("Apache::PerlRun->compile") if $Debug && $Debug & 4; Apache->untaint($$eval); { no strict; #so eval'd code doesn't inherit our bits eval $$eval; } - $pr->stash_rgy_endav; + $r->stash_rgy_endav; return $pr->error_check; } sub run { my $pr = shift; my $package = $pr->{'namespace'}; + my $r = $pr->{r}; my $rc = OK; my $cv = \&{"$package\::handler"}; my $oldwarn = $^W; - eval { $rc = &{$cv}($pr, @_) } if $pr->seqno; + eval { $rc = &{$cv}($r, @_) } if $r->seqno; $pr->{status} = $rc; $^W = $oldwarn; @@ -142,11 +133,11 @@ if($@) { $errsv = $@; $@ = ''; #XXX fix me, if we don't do this Apache::exit() breaks - $@{$pr->uri} = $errsv; + $@{$r->uri} = $errsv; } if($errsv) { - $pr->log_error($errsv); + $r->log_error($errsv); return SERVER_ERROR; } @@ -154,24 +145,25 @@ } sub status { - shift->{'_r'}->status; + shift->{r}->status; } sub namespace_from { my($pr) = @_; + my $r = $pr->{r}; - my $uri = $pr->uri; + my $uri = $r->uri; - $pr->log_error(sprintf "Apache::PerlRun->namespace escaping %s", + $r->log_error(sprintf "Apache::PerlRun->namespace escaping %s", $uri) if $Debug && $Debug & 4; - my $path_info = $pr->path_info; + my $path_info = $r->path_info; my $script_name = $path_info && $uri =~ /$path_info$/ ? substr($uri, 0, length($uri)-length($path_info)) : $uri; - if ($Apache::Registry::NameWithVirtualHost && $pr->server->is_virtual) { - my $name = $pr->get_server_name; + if ($Apache::Registry::NameWithVirtualHost && $r->server->is_virtual) { + my $name = $r->get_server_name; $script_name = join "", $name, $script_name if $name; } @@ -201,7 +193,7 @@ $root ||= "Apache::ROOT"; - $pr->log_error("Apache::PerlRun->namespace: package $root$script_name") + $pr->{r}->log_error("Apache::PerlRun->namespace: package $root$script_name") if $Debug && $Debug & 4; $pr->{'namespace'} = $root.$script_name; @@ -210,13 +202,13 @@ sub readscript { my $pr = shift; - $pr->{'code'} = $pr->slurp_filename; + $pr->{'code'} = $pr->{r}->slurp_filename; } sub error_check { my $pr = shift; if ($@ and substr($@,0,4) ne " at ") { - $pr->log_error("PerlRun: `$@'"); + $pr->{r}->log_error("PerlRun: `$@'"); $@{$pr->uri} = $@; $@ = ''; #XXX fix me, if we don't do this Apache::exit() breaks return SERVER_ERROR; @@ -258,12 +250,12 @@ sub chdir_file { my($pr, $dir) = @_; - $pr->{'_r'}->chdir_file($dir ? $dir : $pr->filename); + my $r = $pr->{r}; + $r->chdir_file($dir ? $dir : $r->filename); } sub set_script_name { - my($pr) = @_; - *0 = \$pr->filename; + *0 = \(shift->{r}->filename); } sub handler ($$) { @@ -419,3 +411,4 @@ Doug MacEachern +=cut 1.5 +1 -1 modperl/lib/Apache/RegistryBB.pm Index: RegistryBB.pm =================================================================== RCS file: /home/cvs/modperl/lib/Apache/RegistryBB.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- RegistryBB.pm 2000/05/29 08:11:14 1.4 +++ RegistryBB.pm 2000/09/28 19:59:37 1.5 @@ -16,7 +16,7 @@ #skip -x, OPT_EXEC, etc. checks sub can_compile { - my $r = shift; + my $r = shift->{r}; unless (-r $r->finfo) { $r->log_reason("file does not exist"); return NOT_FOUND; 1.7 +1 -1 modperl/lib/Apache/RegistryNG.pm Index: RegistryNG.pm =================================================================== RCS file: /home/cvs/modperl/lib/Apache/RegistryNG.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- RegistryNG.pm 2000/06/01 21:07:57 1.6 +++ RegistryNG.pm 2000/09/28 19:59:39 1.7 @@ -17,7 +17,7 @@ # see also: Apache::RegistryBB sub namespace_from { - shift->filename; + shift->{r}->filename; } sub handler ($$) {