return 0;
}
for (;c!=NULL;c=c->next) {
+ c->calls++;
if (((c->handler)("INIT",cargc-1,&cargv[1]))==CMD_LAST)
return 0;
}
long numeric = strtol(cargv[1], NULL, 0);
if((numeric >= MIN_NUMERIC) && (numeric <= MAX_NUMERIC)) {
for(c=numericcommands[numeric];c;c=c->next) {
+ c->calls++;
if (((c->handler)((void *)numeric,cargc,cargv))==CMD_LAST)
return 0;
}
return 0;
}
for (;c!=NULL;c=c->next) {
+ c->calls++;
if (((c->handler)(cargv[0],cargc-2,cargv+2))==CMD_LAST)
return 0;
}
triggerhook(HOOK_CORE_STATSREPLY,buf);
}
}
+void stats_m(char *str1, char *str2) {
+ Command *cmds[500];
+ unsigned int c,i;
+
+ c=getcommandlist(servercommands,cmds,500);
+
+ for (i=0;i<c;i++) {
+ irc_send(":%s 212 %s %s %u 0", str1, str2, cmds[i]->command->content, cmds[i]->calls);
+ }
+}
char *getmynumeric();
time_t getnettime();
void setnettime(time_t newtime);
+void stats_m(char *, char *);
/* Functions from irchandlers.c */
int handleping(void *sender, int cargc, char **cargv);
case 'P':
irc_send(":%s 217 %s P none 0 :0x2000",fromstring,replytarget);
break;
-
+
+ case 'm':
+ stats_m(fromstring, replytarget);
+ break;
}
irc_send(":%s 219 %s %c :End of /STATS report",fromstring,replytarget,cargv[0][0]);
CommandHandler handler; /* Function to deal with the message */
void *ext; /* Pointer to some arbitrary other data */
DestroyExt destroyext; /* Function to destroy ->ext on destroycommandtree (if necessary) */
+ unsigned int calls; /* How many times this command has been called */
struct Command *next; /* Next handler chained onto this command */
} Command;