X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/ffc99f5904934e6e7532bb8cfdebb44ad9ecd913..903213e63fd6c409046f66e73881aba33c3926de:/IkiWiki/Plugin/img.pm diff --git a/IkiWiki/Plugin/img.pm b/IkiWiki/Plugin/img.pm index 17a9367d3..66cc08530 100644 --- a/IkiWiki/Plugin/img.pm +++ b/IkiWiki/Plugin/img.pm @@ -10,9 +10,18 @@ use IkiWiki 2.00; my %imgdefaults; sub import { #{{{ + hook(type => "getsetup", id => "img", call => \&getsetup); hook(type => "preprocess", id => "img", call => \&preprocess, scan => 1); } #}}} +sub getsetup () { #{{{ + return + plugin => { + safe => 1, + rebuild => undef, + }, +} #}}} + sub preprocess (@) { #{{{ my ($image) = $_[0] =~ /$config{wiki_file_regexp}/; # untaint my %params=@_; @@ -41,6 +50,10 @@ sub preprocess (@) { #{{{ } my $file = bestlink($params{page}, $image); + my $srcfile = srcfile($file, 1); + if (! length $file || ! defined $srcfile) { + return htmllink($params{page}, $params{destpage}, $image); + } my $dir = $params{page}; my $base = IkiWiki::basename($file); @@ -61,12 +74,12 @@ sub preprocess (@) { #{{{ will_render($params{page}, $imglink); - if (-e $outfile && (-M srcfile($file) >= -M $outfile)) { + if (-e $outfile && (-M $srcfile >= -M $outfile)) { $r = $im->Read($outfile); error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r; } else { - $r = $im->Read(srcfile($file)); + $r = $im->Read($srcfile); error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r; $r = $im->Resize(geometry => "${w}x${h}"); @@ -83,7 +96,7 @@ sub preprocess (@) { #{{{ } } else { - $r = $im->Read(srcfile($file)); + $r = $im->Read($srcfile); error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r; $imglink = $file; }