]> jfr.im git - irc/quakenet/newserv.git/blame - usercount/usercount.c
A4STATS: remove E style escapes and switch to createtable for indices
[irc/quakenet/newserv.git] / usercount / usercount.c
CommitLineData
2438b4f0
CP
1#include <string.h>
2
2a26f457
CP
3#include "../nick/nick.h"
4#include "../core/hooks.h"
240bbd21 5#include "../lib/version.h"
2a26f457
CP
6#include "usercount.h"
7
240bbd21
CP
8MODULE_VERSION("")
9
2a26f457
CP
10int servercount[MAXSERVERS];
11
12static void uc_newserver(int hook, void *arg);
13static void uc_newnick(int hook, void *arg);
14static void uc_lostnick(int hook, void *arg);
15
16void _init(void) {
2438b4f0
CP
17 nick *np;
18 int i;
19
20 memset(servercount, 0, sizeof(servercount));
21
22 for(i=0;i<NICKHASHSIZE;i++)
23 for(np=nicktable[i];np;np=np->next)
24 servercount[homeserver(np->numeric)]++;
25
2a26f457
CP
26 registerhook(HOOK_SERVER_NEWSERVER, uc_newserver);
27 registerhook(HOOK_NICK_NEWNICK, uc_newnick);
28 registerhook(HOOK_NICK_LOSTNICK, uc_lostnick);
29}
30
31void _fini(void) {
32 deregisterhook(HOOK_SERVER_NEWSERVER, uc_newserver);
33 deregisterhook(HOOK_NICK_NEWNICK, uc_newnick);
34 deregisterhook(HOOK_NICK_LOSTNICK, uc_lostnick);
35}
36
37static void uc_newserver(int hook, void *arg) {
38 long num = (long)arg;
39
40 servercount[num] = 0;
41}
42
43static void uc_newnick(int hook, void *arg) {
44 nick *np = (nick *)arg;
45
46 if(np)
47 servercount[homeserver(np->numeric)]++;
48}
49
50static void uc_lostnick(int hook, void *arg) {
51 nick *np = (nick *)arg;
52
53 if(np)
54 servercount[homeserver(np->numeric)]--;
55}