use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
%renderedfiles %oldrenderedfiles %pagesources %destsources
- %depends %hooks %forcerebuild $gettext_obj};
+ %depends %hooks %forcerebuild $gettext_obj};
use Exporter q{import};
our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
numbacklinks => 10,
account_creation_password => "",
} #}}}
-
+
sub checkconfig () { #{{{
# locale stuff; avoid LC_ALL since it overrides everything
if (defined $ENV{LC_ALL}) {
return if grep { $_ eq $plugin} @{$config{disable_plugins}};
+ foreach my $dir ($config{libdir}, "$installdir/lib/ikiwiki") {
+ if (defined $dir && -x "$dir/plugins/$plugin") {
+ require IkiWiki::Plugin::external;
+ import IkiWiki::Plugin::external "$dir/plugins/$plugin";
+ return 1;
+ }
+ }
+
my $mod="IkiWiki::Plugin::".possibly_foolish_untaint($plugin);
eval qq{use $mod};
if ($@) {
error("Failed to load plugin $mod: $@");
}
+ return 1;
} #}}}
sub error ($;$) { #{{{
}
local $/=undef;
- open (IN, $file) || error("failed to read $file: $!");
- binmode(IN) if ($binary);
- return \*IN if $wantfd;
- my $ret=<IN>;
- close IN || error("failed to read $file: $!");
+ open (my $in, $file) || error("failed to read $file: $!");
+ binmode($in) if ($binary);
+ return \*$in if $wantfd;
+ my $ret=<$in>;
+ close $in || error("failed to read $file: $!");
return $ret;
} #}}}
}
my $cleanup = sub { unlink($newfile) };
- open (OUT, ">$newfile") || error("failed to write $newfile: $!", $cleanup);
- binmode(OUT) if ($binary);
+ open (my $out, '>', $newfile) || error("failed to write $newfile: $!", $cleanup);
+ binmode($out) if ($binary);
if ($writer) {
- $writer->(\*OUT, $cleanup);
+ $writer->(\*$out, $cleanup);
}
else {
- print OUT $content or error("failed writing to $newfile: $!", $cleanup);
+ print $out $content or error("failed writing to $newfile: $!", $cleanup);
}
- close OUT || error("failed saving $newfile: $!", $cleanup);
+ close $out || error("failed saving $newfile: $!", $cleanup);
rename($newfile, "$destdir/$file") ||
error("failed renaming $newfile to $destdir/$file: $!", $cleanup);
} #}}}
my $command=shift;
my $params=shift;
if (length $escape) {
- return "\\[[$command $params]]";
+ return "[[$command $params]]";
}
elsif (exists $hooks{preprocess}{$command}) {
return "" if $scan && ! $hooks{preprocess}{$command}{scan};
return $ret;
}
else {
- return "\\[[$command $params]]";
+ return "[[$command $params]]";
}
};
} #}}}
sub loadindex () { #{{{
- open (IN, "$config{wikistatedir}/index") || return;
- while (<IN>) {
+ open (my $in, "$config{wikistatedir}/index") || return;
+ while (<$in>) {
$_=possibly_foolish_untaint($_);
chomp;
my %items;
$oldrenderedfiles{$page}=[@{$items{dest}}];
$pagectime{$page}=$items{ctime}[0];
}
- close IN;
+ close $in;
} #}}}
sub saveindex () { #{{{
}
my $newfile="$config{wikistatedir}/index.new";
my $cleanup = sub { unlink($newfile) };
- open (OUT, ">$newfile") || error("cannot write to $newfile: $!", $cleanup);
+ open (my $out, '>', $newfile) || error("cannot write to $newfile: $!", $cleanup);
foreach my $page (keys %pagemtime) {
next unless $pagemtime{$page};
my $line="mtime=$pagemtime{$page} ".
if (exists $depends{$page}) {
$line.=" depends=".encode_entities($depends{$page}, " \t\n");
}
- print OUT $line."\n" || error("failed writing to $newfile: $!", $cleanup);
+ print $out $line."\n" || error("failed writing to $newfile: $!", $cleanup);
}
- close OUT || error("failed saving to $newfile: $!", $cleanup);
+ close $out || error("failed saving to $newfile: $!", $cleanup);
rename($newfile, "$config{wikistatedir}/index") ||
error("failed renaming $newfile to $config{wikistatedir}/index", $cleanup);
} #}}}