projects
/
matthijs
/
upstream
/
blosxom.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
1406cae
)
Change plugin loading to use @INC instead of fixed $plugin_dir.
author
Gavin Carr
<gonzai@users.sourceforge.net>
Wed, 29 Aug 2007 12:52:59 +0000
(12:52 +0000)
committer
Gavin Carr
<gonzai@users.sourceforge.net>
Wed, 29 Aug 2007 12:52:59 +0000
(12:52 +0000)
blosxom.cgi
patch
|
blob
|
history
diff --git
a/blosxom.cgi
b/blosxom.cgi
index 320238814f3b13092d44714c39a44326c5abe54f..2a3665681f79377153139c14bf6050df03024c1a 100755
(executable)
--- a/
blosxom.cgi
+++ b/
blosxom.cgi
@@
-163,13
+163,23
@@
while (<DATA>) {
# Plugins: Start
if ( $plugin_dir and opendir PLUGINS, $plugin_dir ) {
# Plugins: Start
if ( $plugin_dir and opendir PLUGINS, $plugin_dir ) {
- foreach my $plugin ( grep { /^\w+$/ && -f "$plugin_dir/$_" } sort readdir(PLUGINS) ) {
+ unshift @INC, $plugin_dir;
+ foreach my $plugin ( grep { /^[\w:]+$/ && -f "$plugin_dir/$_" } sort readdir(PLUGINS) ) {
next if ($plugin =~ /~$/); # Ignore emacs backups
next if ($plugin =~ /~$/); # Ignore emacs backups
- my($plugin_name, $off) = $plugin =~ /^\d*(
\w
+?)(_?)$/;
+ my($plugin_name, $off) = $plugin =~ /^\d*(
[\w:]
+?)(_?)$/;
my $on_off = $off eq '_' ? -1 : 1;
my $on_off = $off eq '_' ? -1 : 1;
- require "$plugin_dir/$plugin";
+ # Allow perl module plugins
+ if ($plugin =~ m/::/ && -z "$plugin_dir/$plugin") {
+ # For Blosxom::Plugin::Foo style plugins, we need to use a string require
+ eval "require $plugin_name";
+ }
+ else {
+ eval { require $plugin };
+ }
+ $@ and warn "error finding or loading blosxom plugin $plugin_name - skipping\n" and next;
$plugin_name->start() and ( $plugins{$plugin_name} = $on_off ) and push @plugins, $plugin_name;
}
$plugin_name->start() and ( $plugins{$plugin_name} = $on_off ) and push @plugins, $plugin_name;
}
+ shift @INC;
closedir PLUGINS;
}
closedir PLUGINS;
}