]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/aggregate.pm
* meta: Add redir support, based on a patch by Thomas Schwinge.
[git.ikiwiki.info.git] / IkiWiki / Plugin / aggregate.pm
index 5024975ac8603223191b9a36525c6a650d6bec77..ea27fc19932e7638758d00f252ca8c0ff9c267b4 100644 (file)
@@ -33,8 +33,10 @@ sub getopt () { #{{{
 sub checkconfig () { #{{{
        if ($config{aggregate} && ! ($config{post_commit} && 
                                     IkiWiki::commit_hook_enabled())) {
 sub checkconfig () { #{{{
        if ($config{aggregate} && ! ($config{post_commit} && 
                                     IkiWiki::commit_hook_enabled())) {
-               # don't wait for the lock
-               IkiWiki::lockwiki(0) || exit 1;
+               if (! IkiWiki::lockwiki(0)) {
+                       debug("wiki is locked by another process, not aggregating");
+                       exit 1;
+               }
        
                loadstate();
                IkiWiki::loadindex();
        
                loadstate();
                IkiWiki::loadindex();
@@ -126,8 +128,8 @@ my $state_loaded=0;
 sub loadstate () { #{{{
        return if $state_loaded;
        if (-e "$config{wikistatedir}/aggregate") {
 sub loadstate () { #{{{
        return if $state_loaded;
        if (-e "$config{wikistatedir}/aggregate") {
-               open (IN, "$config{wikistatedir}/aggregate" ||
-                       die "$config{wikistatedir}/aggregate: $!");
+               open(IN, "$config{wikistatedir}/aggregate") ||
+                       die "$config{wikistatedir}/aggregate: $!";
                while (<IN>) {
                        $_=IkiWiki::possibly_foolish_untaint($_);
                        chomp;
                while (<IN>) {
                        $_=IkiWiki::possibly_foolish_untaint($_);
                        chomp;
@@ -218,6 +220,7 @@ sub expire () { #{{{
        foreach my $feed (values %feeds) {
                next unless $feed->{expireage} || $feed->{expirecount};
                my $count=0;
        foreach my $feed (values %feeds) {
                next unless $feed->{expireage} || $feed->{expirecount};
                my $count=0;
+               my %seen;
                foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
                                  grep { exists $_->{page} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} }
                                  values %guids) {
                foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
                                  grep { exists $_->{page} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} }
                                  values %guids) {
@@ -235,7 +238,10 @@ sub expire () { #{{{
                                $item->{expired}=1;
                        }
                        else {
                                $item->{expired}=1;
                        }
                        else {
-                               $count++;
+                               if (! $seen{$item->{page}}) {
+                                       $seen{$item->{page}}=1;
+                                       $count++;
+                               }
                        }
                }
        }
                        }
                }
        }
@@ -473,7 +479,7 @@ sub pagefile ($) { #{{{
 } #}}}
 
 sub htmlfn ($) { #{{{
 } #}}}
 
 sub htmlfn ($) { #{{{
-       return shift().".html";
+       return shift().".".$config{htmlext};
 } #}}}
 
 1
 } #}}}
 
 1