Get rid of struct newscache
Just use struct nwsstr, it has the uid now.
This commit is contained in:
parent
b18f410e30
commit
832574b6de
1 changed files with 21 additions and 27 deletions
|
@ -43,30 +43,24 @@
|
||||||
|
|
||||||
#define SLOTS 5
|
#define SLOTS 5
|
||||||
|
|
||||||
struct newscache {
|
static struct nwsstr cache[MAXNOC][SLOTS];
|
||||||
struct nwsstr news;
|
|
||||||
int id;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct newscache cache[MAXNOC][SLOTS];
|
|
||||||
static int news_tail;
|
static int news_tail;
|
||||||
|
|
||||||
static struct newscache *
|
static struct nwsstr *ncache(int actor, int event, int victim, int times);
|
||||||
ncache(int actor, int event, int victim, int times);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nreport(natid actor, int event, natid victim, int times)
|
nreport(natid actor, int event, natid victim, int times)
|
||||||
{
|
{
|
||||||
int nice;
|
int nice;
|
||||||
struct natstr *natp;
|
struct natstr *natp;
|
||||||
struct newscache *ncp;
|
struct nwsstr *np;
|
||||||
|
|
||||||
if (CANT_HAPPEN((unsigned)event > N_MAX_VERB
|
if (CANT_HAPPEN((unsigned)event > N_MAX_VERB
|
||||||
|| rpt[event].r_newstory[0] == rpt[0].r_newstory[0]))
|
|| rpt[event].r_newstory[0] == rpt[0].r_newstory[0]))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ncp = ncache(actor, event, victim, times);
|
np = ncache(actor, event, victim, times);
|
||||||
putnews(ncp->id, &ncp->news);
|
putnews(np->nws_uid, np);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this is probably pretty expensive, but hopefully we
|
* this is probably pretty expensive, but hopefully we
|
||||||
|
@ -154,10 +148,10 @@ init_nreport(void)
|
||||||
* in the last 5 minutes, if so just increment the times
|
* in the last 5 minutes, if so just increment the times
|
||||||
* field instead of creating a new message.
|
* field instead of creating a new message.
|
||||||
*/
|
*/
|
||||||
static struct newscache *
|
static struct nwsstr *
|
||||||
ncache(int actor, int event, int victim, int times)
|
ncache(int actor, int event, int victim, int times)
|
||||||
{
|
{
|
||||||
struct newscache *np;
|
struct nwsstr *np;
|
||||||
int i;
|
int i;
|
||||||
int oldslot;
|
int oldslot;
|
||||||
time_t oldtime;
|
time_t oldtime;
|
||||||
|
@ -167,17 +161,17 @@ ncache(int actor, int event, int victim, int times)
|
||||||
oldtime = 0x7fffffff;
|
oldtime = 0x7fffffff;
|
||||||
for (i = 0; i < SLOTS; i++) {
|
for (i = 0; i < SLOTS; i++) {
|
||||||
np = &cache[actor][i];
|
np = &cache[actor][i];
|
||||||
if (np->news.nws_when < oldtime) {
|
if (np->nws_when < oldtime) {
|
||||||
oldslot = i;
|
oldslot = i;
|
||||||
oldtime = np->news.nws_when;
|
oldtime = np->nws_when;
|
||||||
}
|
}
|
||||||
if (np->id == 0)
|
if (np->nws_uid == 0)
|
||||||
continue;
|
continue;
|
||||||
if ((now - np->news.nws_when) > minutes(5))
|
if (now - np->nws_when > minutes(5))
|
||||||
continue;
|
continue;
|
||||||
if (np->news.nws_vrb == event && np->news.nws_vno == victim &&
|
if (np->nws_vrb == event && np->nws_vno == victim
|
||||||
np->news.nws_ntm + times <= 127) {
|
&& np->nws_ntm + times <= 127) {
|
||||||
np->news.nws_ntm += times;
|
np->nws_ntm += times;
|
||||||
return np;
|
return np;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,12 +180,12 @@ ncache(int actor, int event, int victim, int times)
|
||||||
if (CANT_HAPPEN(!strstr(rpt[event].r_newstory[0], "%s") && victim != 0))
|
if (CANT_HAPPEN(!strstr(rpt[event].r_newstory[0], "%s") && victim != 0))
|
||||||
victim = 0;
|
victim = 0;
|
||||||
np = &cache[actor][oldslot];
|
np = &cache[actor][oldslot];
|
||||||
ef_blank(EF_NEWS, news_tail, &np->news);
|
ef_blank(EF_NEWS, news_tail, np);
|
||||||
np->news.nws_ano = actor;
|
np->nws_ano = actor;
|
||||||
np->news.nws_vno = victim;
|
np->nws_vno = victim;
|
||||||
np->news.nws_when = now;
|
np->nws_when = now;
|
||||||
np->news.nws_vrb = event;
|
np->nws_vrb = event;
|
||||||
np->news.nws_ntm = times;
|
np->nws_ntm = times;
|
||||||
np->id = news_tail++;
|
news_tail++;
|
||||||
return np;
|
return np;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue