Fix news expiry not to screw up nws_uid

delete_old_news() moves unexpired news.  Update nws_uid accordingly.
It then zaps the slots no longer in use.  Don't zap ef_type and
nws_uid.
This commit is contained in:
Markus Armbruster 2008-02-24 19:55:10 +01:00
parent 7dafbada4e
commit b18f410e30

View file

@ -116,15 +116,17 @@ delete_old_news(void)
for (j = 0; getnews(i + j, &news); j++) { for (j = 0; getnews(i + j, &news); j++) {
if (news.nws_when == 0) if (news.nws_when == 0)
break; break;
news.nws_uid = j;
putnews(j, &news); putnews(j, &news);
} }
CANT_HAPPEN(i + j != news_tail); CANT_HAPPEN(i + j != news_tail);
news_tail = j; news_tail = j;
/* mark slots no longer in use */ /* mark slots no longer in use */
memset(&news, 0, sizeof(news)); for (k = 0; k < i; k++) {
for (k = 0; k < i; k++) ef_blank(EF_NEWS, j + k, &news);
putnews(j + k, &news); putnews(j + k, &news);
}
/* clear cache because moving news invalidated it */ /* clear cache because moving news invalidated it */
memset(&cache, 0, sizeof(cache)); memset(&cache, 0, sizeof(cache));