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();
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;
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) {
$item->{expired}=1;
}
else {
- $count++;
+ if (! $seen{$item->{page}}) {
+ $seen{$item->{page}}=1;
+ $count++;
+ }
}
}
}
} #}}}
sub htmlfn ($) { #{{{
- return shift().".html";
+ return shift().".".$config{htmlext};
} #}}}
1