From b719f39c0fddfd5174637e0161676f9b25a36485 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 31 Dec 2009 09:17:54 +0100 Subject: [PATCH] New news selector duration Backed by new struct nwsstr member nws_duration. Time between first and last occurence of the news recorded in this item, in seconds. --- include/news.h | 1 + src/lib/common/nsc.c | 1 + src/lib/subs/nreport.c | 11 +++++++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/news.h b/include/news.h index 24554f096..54d7ef9f0 100644 --- a/include/news.h +++ b/include/news.h @@ -55,6 +55,7 @@ struct nwsstr { unsigned char nws_vrb; /* action (verb) */ natid nws_vno; /* "victim" country # */ signed char nws_ntm; /* number of times */ + short nws_duration; /* last time at nws_when + nws_duration */ time_t nws_when; /* time of action */ }; diff --git a/src/lib/common/nsc.c b/src/lib/common/nsc.c index 462007982..eb0348ee9 100644 --- a/src/lib/common/nsc.c +++ b/src/lib/common/nsc.c @@ -475,6 +475,7 @@ struct castr news_ca[] = { {"action", fldoff(nws_vrb), NSC_UCHAR, 0, NULL, EF_NEWS_CHR, 0}, {"victim", fldoff(nws_vno), NSC_NATID, 0, NULL, EF_NATION, 0}, {"times", fldoff(nws_ntm), NSC_CHAR, 0, NULL, EF_BAD, 0}, + {"duration", fldoff(nws_duration), NSC_SHORT, 0, NULL, EF_BAD, 0}, {"time", fldoff(nws_when), NSC_TIME, 0, NULL, EF_BAD, 0}, {NULL, 0, NSC_NOTYPE, 0, NULL, EF_BAD, 0} #undef CURSTR diff --git a/src/lib/subs/nreport.c b/src/lib/subs/nreport.c index 522888f25..2d92aa8a1 100644 --- a/src/lib/subs/nreport.c +++ b/src/lib/subs/nreport.c @@ -161,7 +161,7 @@ ncache(int actor, int event, int victim, int times) struct newscache *np; int i; int oldslot; - time_t oldtime; + time_t oldtime, dur; time_t now = time(NULL); oldslot = -1; @@ -174,11 +174,13 @@ ncache(int actor, int event, int victim, int times) } if (np->news.nws_vrb == 0) continue; - if ((now - np->news.nws_when) > minutes(5)) + dur = now - np->news.nws_when; + if (dur > minutes(5)) continue; if (np->news.nws_vrb == event && np->news.nws_vno == victim && np->news.nws_ntm + times <= 127) { np->news.nws_ntm += times; + np->news.nws_duration = dur; return np; } } @@ -189,10 +191,11 @@ ncache(int actor, int event, int victim, int times) np = &cache[actor][oldslot]; ef_blank(EF_NEWS, news_tail, &np->news); np->news.nws_ano = actor; - np->news.nws_vno = victim; - np->news.nws_when = now; np->news.nws_vrb = event; + np->news.nws_vno = victim; np->news.nws_ntm = times; + np->news.nws_duration = 0; + np->news.nws_when = now; np->id = news_tail++; return np; } -- 2.43.0