]> jfr.im git - irc/quakenet/newserv.git/blobdiff - patricianick/patricianick.c
LUA: add function for channel chanop notice
[irc/quakenet/newserv.git] / patricianick / patricianick.c
index 91f86e549145fe486895dfe0259723ae549e8a72..44de41dcd4a63f45d2abf8cfdf71865940284e8f 100644 (file)
 #include <stdio.h>
 #include <string.h>
 
-#define ALLOCUNIT      100
-
 MODULE_VERSION("")
 
-patricianick_t *freepatricianicks;
 int pnode_ext;
 int pnick_ext;
 
@@ -46,7 +43,6 @@ void _init() {
 
   registerhook(HOOK_NICK_NEWNICK, &pn_hook_newuser);
   registerhook(HOOK_NICK_LOSTNICK, &pn_hook_lostuser);
-  registerhook(HOOK_NICK_MOVENODE, &pn_hook_nodemoveuser);
 
   registercontrolhelpcmd("nodeuserlist", NO_OPER, 1, &pn_cmd_nodeuserlist, "Usage: nodeuserlist <ipv4|ipv6|cidr4|cidr6>\nLists all users on a given IP address or CIDR range.");
 }
@@ -64,25 +60,15 @@ void _fini() {
 
   deregisterhook(HOOK_NICK_NEWNICK, &pn_hook_newuser);
   deregisterhook(HOOK_NICK_LOSTNICK, &pn_hook_lostuser);
-  deregisterhook(HOOK_NICK_MOVENODE, &pn_hook_nodemoveuser);
 
   deregistercontrolcmd("nodeuserlist", &pn_cmd_nodeuserlist);
 }
 
 patricianick_t *getpatricianick() {
-  int i;
-  patricianick_t *pnp;
-
-  if (freepatricianicks==NULL) {
-    freepatricianicks=(patricianick_t *)nsmalloc(POOL_PATRICIANICK, ALLOCUNIT*sizeof(patricianick_t));
-    for(i=0;i<ALLOCUNIT-1;i++) {
-      freepatricianicks[i].identhash[0]=(nick *)&(freepatricianicks[i+1]);
-    }
-    freepatricianicks[ALLOCUNIT-1].identhash[0]=NULL;
-  }
+  patricianick_t *pnp = nsmalloc(POOL_PATRICIANICK, sizeof(patricianick_t));
 
-  pnp=freepatricianicks;
-  freepatricianicks=(patricianick_t *)pnp->identhash[0];
+  if (!pnp)
+    return NULL;
 
   memset(pnp, 0, sizeof(patricianick_t));
   return pnp;
@@ -132,8 +118,7 @@ void deletenickfromnode(patricia_node_t *node, nick *np) {
 }
 
 void freepatricianick(patricianick_t *pnp) {
-  pnp->identhash[0]=(nick *)freepatricianicks;
-  freepatricianicks=pnp;
+  nsfree(POOL_PATRICIANICK, pnp);
 }
 
 void pn_hook_newuser(int hook, void *arg) {
@@ -148,14 +133,6 @@ void pn_hook_lostuser(int hook, void *arg) {
   deletenickfromnode(np->ipnode, np);
 }
 
-void pn_hook_nodemoveuser(int hook, void *arg) {
-  nick *np = ((void **)arg)[0];
-  patricia_node_t *oldnode = ((void **)arg)[1];
-
-  deletenickfromnode(oldnode, np);
-  addnicktonode(np->ipnode, np);
-}
-
 int pn_cmd_nodeuserlist(void *source, int cargc, char **cargv) {
   nick *np=(nick *)source;
   struct irc_in_addr sin;