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.
master
Joey Hess 2008-09-17 18:09:38 -04:00
parent 6a90f5cb3f
commit 89953e3e19
2 changed files with 11 additions and 8 deletions

View File

@ -420,10 +420,10 @@ sub expire () { #{{{
next unless $feed->{expireage} || $feed->{expirecount}; next unless $feed->{expireage} || $feed->{expirecount};
my $count=0; my $count=0;
my %seen; 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} } grep { exists $_->{page} && $_->{feed} eq $feed->{name} }
values %guids) { values %guids) {
if ($feed->{expireage} && $IkiWiki::pagectime{$_->{page}}) { if ($feed->{expireage}) {
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24; my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) { if ($days_old > $feed->{expireage}) {
debug(sprintf(gettext("expiring %s (%s days old)"), debug(sprintf(gettext("expiring %s (%s days old)"),
@ -618,10 +618,13 @@ sub add_page (@) { #{{{
writefile(htmlfn($guid->{page}), $config{srcdir}, writefile(htmlfn($guid->{page}), $config{srcdir},
$template->output); $template->output);
# Set the mtime, this lets the build process get the right creation if (defined $mtime && $mtime <= time) {
# time on record for the new page. # Set the mtime, this lets the build process get the right
utime $mtime, $mtime, pagefile($guid->{page}) # creation time on record for the new page.
if defined $mtime && $mtime <= time; utime $mtime, $mtime, pagefile($guid->{page});
# Store it in pagectime for expiry code to use also.
$IkiWiki::pagectime{$guid->{page}}=$mtime;
}
} #}}} } #}}}
sub htmlescape ($) { #{{{ sub htmlescape ($) { #{{{

4
debian/changelog vendored
View File

@ -1,7 +1,7 @@
ikiwiki (2.65) UNRELEASED; urgency=low ikiwiki (2.65) UNRELEASED; urgency=low
* aggregate: Allow expirecount to work on the first pass. (expireage still * aggregate: Expire excess or old items on the same pass that adds them,
needs to wait for the pages to be rendered though) not only on subsequent passes.
* editdiff: Broken since 2.62 due to wrong syntax, now fixed. * editdiff: Broken since 2.62 due to wrong syntax, now fixed.
* aggregate: Support atom feeds with only a summary element, and no content * aggregate: Support atom feeds with only a summary element, and no content
elements. elements.