summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-09-17 18:09:38 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-09-17 18:11:22 -0400
commit89953e3e19d3e5fb0f5c9d47e3905fde27ab08cb (patch)
treecd4d5a5f2f901eb99d22b1d03bebb3884abb61b1
parent6a90f5cb3fca4e5530b144cf5bb054c15798756e (diff)
store ctime for use by expiry code
The expiry code does need to make sure to sort in ctime order, even if expiring by count, so it expires the right ones.
-rw-r--r--IkiWiki/Plugin/aggregate.pm15
-rw-r--r--debian/changelog4
2 files changed, 11 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index c1421f246..f47dc58b3 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -420,10 +420,10 @@ sub expire () { #{{{
next unless $feed->{expireage} || $feed->{expirecount};
my $count=0;
my %seen;
- foreach my $item (sort { ($IkiWiki::pagectime{$b->{page}}||0) <=> ($IkiWiki::pagectime{$a->{page}}||0) }
+ foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
grep { exists $_->{page} && $_->{feed} eq $feed->{name} }
values %guids) {
- if ($feed->{expireage} && $IkiWiki::pagectime{$_->{page}}) {
+ if ($feed->{expireage}) {
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"),
@@ -618,10 +618,13 @@ sub add_page (@) { #{{{
writefile(htmlfn($guid->{page}), $config{srcdir},
$template->output);
- # Set the mtime, this lets the build process get the right creation
- # time on record for the new page.
- utime $mtime, $mtime, pagefile($guid->{page})
- if defined $mtime && $mtime <= time;
+ if (defined $mtime && $mtime <= time) {
+ # Set the mtime, this lets the build process get the right
+ # creation time on record for the new page.
+ utime $mtime, $mtime, pagefile($guid->{page});
+ # Store it in pagectime for expiry code to use also.
+ $IkiWiki::pagectime{$guid->{page}}=$mtime;
+ }
} #}}}
sub htmlescape ($) { #{{{
diff --git a/debian/changelog b/debian/changelog
index 5ad864c13..bf44d9851 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,7 @@
ikiwiki (2.65) UNRELEASED; urgency=low
- * aggregate: Allow expirecount to work on the first pass. (expireage still
- needs to wait for the pages to be rendered though)
+ * aggregate: Expire excess or old items on the same pass that adds them,
+ not only on subsequent passes.
* editdiff: Broken since 2.62 due to wrong syntax, now fixed.
* aggregate: Support atom feeds with only a summary element, and no content
elements.