X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/10017feaec75703b484f4d4f066e9d77cc7625ce..2c784773879b228b7dfec2c6d092c9e1e98ab97b:/IkiWiki/Plugin/aggregate.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 5024975ac..ea27fc199 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -33,8 +33,10 @@ sub getopt () { #{{{ 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(); @@ -126,8 +128,8 @@ my $state_loaded=0; 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 () { $_=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; + 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) { @@ -235,7 +238,10 @@ sub expire () { #{{{ $item->{expired}=1; } else { - $count++; + if (! $seen{$item->{page}}) { + $seen{$item->{page}}=1; + $count++; + } } } } @@ -473,7 +479,7 @@ sub pagefile ($) { #{{{ } #}}} sub htmlfn ($) { #{{{ - return shift().".html"; + return shift().".".$config{htmlext}; } #}}} 1