[1184] in BarnOwl Developers
[D-O-H] r1124 - trunk/owl/perl/lib/BarnOwl
daemon@ATHENA.MIT.EDU (nelhage@MIT.EDU)
Thu Oct 29 18:13:52 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
X-Original-To: nelhage@nelhage.com
To: dirty-owl-hackers@MIT.EDU
From: nelhage@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Mon, 15 Sep 2008 21:04:50 -0400 (EDT)
Author: nelhage
Date: 2008-09-15 21:04:49 -0400 (Mon, 15 Sep 2008)
New Revision: 1124
Modified:
trunk/owl/perl/lib/BarnOwl/ModuleLoader.pm
Log:
Fix :reload-module's interactions with PAR modules.
Modified: trunk/owl/perl/lib/BarnOwl/ModuleLoader.pm
===================================================================
--- trunk/owl/perl/lib/BarnOwl/ModuleLoader.pm 2008-09-15 23:14:31 UTC (rev 1123)
+++ trunk/owl/perl/lib/BarnOwl/ModuleLoader.pm 2008-09-16 01:04:49 UTC (rev 1124)
@@ -12,6 +12,7 @@
sub load_all {
my $class = shift;
$class->rescan_modules;
+ PAR::reload_libs();
for my $mod (keys %modules) {
if(!defined eval "use BarnOwl::Module::$mod") {
@@ -23,7 +24,6 @@
}
sub rescan_modules {
- PAR::reload_libs();
PAR->import(BarnOwl::get_data_dir() . "/modules/*.par");
PAR->import(BarnOwl::get_config_dir() . "/modules/*.par");
my @modules;
@@ -64,8 +64,19 @@
delete $INC{$m} if $m =~ m{^BarnOwl/Module/$module};
}
+ my $parfile;
+ for my $p (@PAR::PAR_INC) {
+ if($p =~ m/\Q$module\E[.]par$/) {
+ $parfile = $p;
+ last;
+ }
+ }
+
local $SIG{__WARN__} = \&squelch_redefine;
- if(!defined eval "use BarnOwl::Module::$module") {
+
+ if(defined $parfile) {
+ PAR::reload_libs($parfile);
+ } elsif(!defined eval "use BarnOwl::Module::$module") {
BarnOwl::error("Unable to load module $module: \n$@\n") if $@;
}
}