]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/recentchangesdiff.pm
avoid internal error message when img uses just-deleted page
[git.ikiwiki.info.git] / IkiWiki / Plugin / recentchangesdiff.pm
index bd2826f76518fc2c1a7060d21110331ce744ac2d..3942f308b05a86b5d4e7f0524fd756534a492391 100644 (file)
@@ -5,6 +5,8 @@ use warnings;
 use strict;
 use IkiWiki 2.00;
 
 use strict;
 use IkiWiki 2.00;
 
+my $maxlines=200;
+
 sub import { #{{{
        hook(type => "pagetemplate", id => "recentchangesdiff",
                call => \&pagetemplate);
 sub import { #{{{
        hook(type => "pagetemplate", id => "recentchangesdiff",
                call => \&pagetemplate);
@@ -15,8 +17,17 @@ sub pagetemplate (@) { #{{{
        my $template=$params{template};
        if ($config{rcs} && exists $params{rev} && length $params{rev} &&
            $template->query(name => "diff")) {
        my $template=$params{template};
        if ($config{rcs} && exists $params{rev} && length $params{rev} &&
            $template->query(name => "diff")) {
-               my $diff=IkiWiki::rcs_diff($params{rev});
-               if (defined $diff && length $diff) {
+               my @lines=IkiWiki::rcs_diff($params{rev});
+               if (@lines) {
+                       my $diff;
+                       if (@lines > $maxlines) {
+                               # only include so many lines of diff
+                               $diff=join("", @lines[0..($maxlines-1)])."\n".
+                                       gettext("(Diff truncated)");
+                       }
+                       else {
+                               $diff=join("", @lines);
+                       }
                        # escape links and preprocessor stuff
                        $diff =~ s/(?<!\\)\[\[/\\\[\[/g;
                        $template->param(diff => $diff);
                        # escape links and preprocessor stuff
                        $diff =~ s/(?<!\\)\[\[/\\\[\[/g;
                        $template->param(diff => $diff);