void rotatechanstats();
void savechanstats();
void loadchanstats();
+int dochanstatssave(void *source, int argc, char **argv);
int dochanstats(void *source, int argc, char **argv);
int doexpirecheck(void *source, int cargc, char **cargv);
int douserhistogram(void *source, int cargc, char **cargv);
/* Work out when to take the next sample */
now=getnettime();
if (now < chanstats_lastsample) {
- Error("chanstats",ERR_WARNING,"Last sample time in future (%d > %d)",chanstats_lastsample,now);
+ Error("chanstats",ERR_WARNING,"Last sample time in future (%jd > %jd)",(intmax_t)chanstats_lastsample,(intmax_t)now);
when=now;
} else if (now<(chanstats_lastsample+SAMPLEINTERVAL)) {
lastday=chanstats_lastsample/(24*3600);
registercontrolcmd("channelhistogram",10,13,&dochanhistogram);
registercontrolcmd("userhistogram",10,1,&douserhistogram);
registercontrolcmd("expirecheck",10,1,&doexpirecheck);
+ registercontrolhelpcmd("chanstatssave",NO_DEVELOPER,1, &dochanstatssave, "Usage: chanstatssave\nForce a save of chanstats data");
schedulerecurring(when,0,SAMPLEINTERVAL,&doupdate,NULL);
}
}
deregistercontrolcmd("channelhistogram",&dochanhistogram);
deregistercontrolcmd("userhistogram",&douserhistogram);
deregistercontrolcmd("expirecheck",&doexpirecheck);
+ deregistercontrolcmd("chanstatssave",&dochanstatssave);
releasechanext(csext);
cstsfreeall();
}
continue;
if ((np=getnickbynumeric(cp->users->content[i]))==NULL) {
- Error("channel",ERR_ERROR,"Found unknown numeric %u on channel %s",cp->users->content[i],cp->index->name->content);
+ Error("channel",ERR_ERROR,"Found unknown numeric %lu on channel %s",cp->users->content[i],cp->index->name->content);
continue;
}
chanindex *cip;
chanstats *chp;
- if ((fp=fopen("chanstats","w"))==NULL) {
+ if ((fp=fopen("data/chanstats","w"))==NULL) {
return;
}
chanstats *chp;
chanindex *cip;
- if ((fp=fopen("chanstats","r"))==NULL) {
+ if ((fp=fopen("data/chanstats","r"))==NULL) {
Error("chanstats",ERR_ERROR,"Unable to load channel stats file");
return;
}
}
}
}
+
+int dochanstatssave(void *source, int cargc, char **cargv) {
+ nick *sender=(nick *)source;
+
+ controlreply(sender,"Saving Chanstats..");
+ savechanstats();
+ controlreply(sender,"Chanstats saved");
+ return CMD_OK;
+}