You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by do...@apache.org on 2001/06/14 18:38:28 UTC

cvs commit: modperl/lib/Apache StatINC.pm

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 <mo...@future.galanet.net>]
  +
   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 <ga...@atdot.org>]
   
  -- Apache::StatINC patch [Ilya Konstantinov <mo...@future.galanet.net>]
  -
   - From: Dave Rolsky <au...@urth.org>
     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;
       }