wiki_file_prune_regexps => [qr/\.\./, qr/^\./, qr/\/\./,
qr/\.x?html?$/, qr/\.ikiwiki-new$/,
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
+ qr/(^|\/)_MTN\//,
qr/\.dpkg-tmp$/],
wiki_link_regexp => qr{
\[\[ # beginning of link
sub loadplugins () { #{{{
if (defined $config{libdir}) {
- unshift @INC, $config{libdir};
+ unshift @INC, possibly_foolish_untaint($config{libdir});
}
loadplugin($_) foreach @{$config{plugin}};
return if grep { $_ eq $plugin} @{$config{disable_plugins}};
- foreach my $dir ($config{libdir}, "$installdir/lib/ikiwiki") {
+ foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
+ "$installdir/lib/ikiwiki") {
if (defined $dir && -x "$dir/plugins/$plugin") {
require IkiWiki::Plugin::external;
import IkiWiki::Plugin::external "$dir/plugins/$plugin";
} #}}}
sub unlockwiki () { #{{{
- return close($wikilock);
+ return close($wikilock) if $wikilock;
+ return;
} #}}}
my $commitlock;
} #}}}
sub enable_commit_hook () { #{{{
- return close($commitlock);
+ return close($commitlock) if $commitlock;
+ return;
} #}}}
sub loadindex () { #{{{
sub gettext { #{{{
# Only use gettext in the rare cases it's needed.
- if (exists $ENV{LANG} || exists $ENV{LC_ALL} || exists $ENV{LC_MESSAGES}) {
+ if ((exists $ENV{LANG} && length $ENV{LANG}) ||
+ (exists $ENV{LC_ALL} && length $ENV{LC_ALL}) ||
+ (exists $ENV{LC_MESSAGES} && length $ENV{LC_MESSAGES})) {
if (! $gettext_obj) {
$gettext_obj=eval q{
use Locale::gettext q{textdomain};