sub needsbuild (@) { #{{{
my $needsbuild=shift;
+
+ loadstate(); # if not already loaded
- foreach my $page (keys %pagestate) {
- if (grep { $_ eq $pagesources{$page} } @$needsbuild) {
- loadstate(); # if not already loaded
+ foreach my $feed (values %feeds) {
+ if (grep { $_ eq $pagesources{$feed->{sourcepage}} } @$needsbuild) {
# Mark all feeds originating on this page as removable;
# preprocess will unmark those that still exist.
- remove_feeds($page);
+ remove_feeds($feed->{sourcepage});
}
}
} # }}}
eval q{use HTML::Entities};
error($@) if $@;
my $newfile="$config{wikistatedir}/aggregate.new";
- # TODO: This cleanup function could use improvement. Any newly
- # aggregated files are left behind unrecorded, and should be deleted.
my $cleanup = sub { unlink($newfile) };
open (OUT, ">$newfile") || error("open $newfile: $!", $cleanup);
foreach my $data (values %feeds, values %guids) {
}
}
else {
- unlink pagefile($data->{page});
+ unlink pagefile($data->{page})
+ if exists $data->{page};
}
next;
}
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"),
- $item->{page}, $days_old));
+ $item->{page}, int($days_old)));
$item->{expired}=1;
}
}