dougm 01/06/14 09:38:27 Modified: . Changes ToDo lib/Apache StatINC.pm Log: make sure file to be reloaded can be found in @INC Revision Changes Path 1.599 +4 -0 modperl/Changes Index: Changes =================================================================== RCS file: /home/cvs/modperl/Changes,v retrieving revision 1.598 retrieving revision 1.599 diff -u -r1.598 -r1.599 --- Changes 2001/06/14 05:26:27 1.598 +++ Changes 2001/06/14 16:38:15 1.599 @@ -10,6 +10,10 @@ =item 1.25_01-dev +make sure file to be reloaded can be found in @INC, adjusting based on +%INC value if needed +[Ilya Konstantinov <[EMAIL PROTECTED]>] + croak if the filehandle passed to $r->send_fd is NULL, otherwise apache will segfault 1.284 +0 -2 modperl/ToDo Index: ToDo =================================================================== RCS file: /home/cvs/modperl/ToDo,v retrieving revision 1.283 retrieving revision 1.284 diff -u -r1.283 -r1.284 --- ToDo 2001/06/14 16:14:58 1.283 +++ ToDo 2001/06/14 16:38:18 1.284 @@ -51,8 +51,6 @@ - Apache::FakeRequest improvments [Gary Richardson <[EMAIL PROTECTED]>] -- Apache::StatINC patch [Ilya Konstantinov <[EMAIL PROTECTED]>] - - From: Dave Rolsky <[EMAIL PROTECTED]> Subject: Apache::test patch 1.15 +26 -4 modperl/lib/Apache/StatINC.pm Index: StatINC.pm =================================================================== RCS file: /home/cvs/modperl/lib/Apache/StatINC.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- StatINC.pm 2000/03/07 02:50:38 1.14 +++ StatINC.pm 2001/06/14 16:38:24 1.15 @@ -11,7 +11,7 @@ $r->dir_config("UndefOnReload")) || '') eq "on"); my $DEBUG = ref($r) && (lc($r->dir_config("StatINCDebug") || '') eq "on"); $DEBUG = $r->dir_config("StatINC_Debug") if ref($r) && $r->dir_config("StatINC_Debug"); - + while(my($key,$file) = each %INC) { local $^W = 0; my $mtime = (stat $file)[9]; @@ -20,16 +20,38 @@ unless(defined $Stat{$file}) { $Stat{$file} = $^T; } + # if modified, reload the module if($mtime > $Stat{$file}) { + # make sure file's prefix is in @INC + my $found_in_inc; + for (@INC) { + if(index($file,$_) == 0) { + $found_in_inc = 1; + last; + } + } + + if(!$found_in_inc) { + my $inc_dir = substr($file, 0, length($file)-length($key)-1); + push @INC, $inc_dir; + warn "Apache::StatINC: process $$ adding $inc_dir to \@INC\n" + if $DEBUG > 0; + } + if($do_undef and $key =~ /\.pm$/) { require Apache::Symbol; my $class = Apache::Symbol::file2class($key); $class->Apache::Symbol::undef_functions( undef, 1 ); } delete $INC{$key}; - require $key; - warn "Apache::StatINC: process $$ reloading $key\n" - if $DEBUG > 0; + eval{ require $key }; + if ($@) { + warn "Apache::StatINC: process $$ failed to reload $key. $@" + if $DEBUG > 0; + } else { + warn "Apache::StatINC: process $$ reloading $key.\n" + if $DEBUG > 0; + } } $Stat{$file} = $mtime; }