#include "../core/hooks.h"
#include "../lib/strlfunc.h"
#include "../lib/version.h"
+#include "../lib/ccassert.h"
#include <string.h>
#include <stdio.h>
MODULE_VERSION("")
-#define ALLOCUNIT 100
+/* checking to see that u_int64_t == unsigned long long for strtoull */
+CCASSERT(sizeof(unsigned long long) == sizeof(u_int64_t))
#define authnamehash(x) ((x)%AUTHNAMEHASHSIZE)
-#define authnamehashbyname(x) (crc32i(x)%AUTHNAMEHASHSIZE)
+#define authnamehashbyname(x) (irc_crc32i(x)%AUTHNAMEHASHSIZE)
-authname *freeauthnames;
authname *authnametable[AUTHNAMEHASHSIZE];
/* internal access only */
static struct {
sstring *name;
- int persistant;
+ int persistent;
} authnameexts[MAXAUTHNAMEEXTS];
static void authextstats(int hooknum, void *arg);
void _init(void) {
- freeauthnames=NULL;
memset(authnametable,0,sizeof(authnametable));
memset(authnametablebyname,0,sizeof(authnametablebyname));
registerhook(HOOK_CORE_STATSREQUEST, &authextstats);
}
authname *newauthname(void) {
- authname *anp;
- int i;
-
- if (freeauthnames==NULL) {
- freeauthnames=(authname *)nsmalloc(POOL_AUTHEXT, ALLOCUNIT*sizeof(authname));
- for (i=0;i<(ALLOCUNIT-1);i++) {
- freeauthnames[i].next=&(freeauthnames[i+1]);
- }
- freeauthnames[ALLOCUNIT-1].next=NULL;
- }
-
- anp=freeauthnames;
- freeauthnames=anp->next;
-
- return anp;
+ return nsmalloc(POOL_AUTHEXT, sizeof(authname));
}
void freeauthname (authname *anp) {
- anp->next=freeauthnames;
- freeauthnames=anp;
+ nsfree(POOL_AUTHEXT, anp);
}
-int registerauthnameext(const char *name, int persistant) {
+int registerauthnameext(const char *name, int persistent) {
int i;
if (findauthnameext(name)!=-1) {
for (i=0;i<MAXAUTHNAMEEXTS;i++) {
if (authnameexts[i].name==NULL) {
authnameexts[i].name=getsstring(name,100);
- authnameexts[i].persistant=persistant;
+ authnameexts[i].persistent=persistent;
return i;
}
}
anp->nicks = NULL;
for(i=0;i<MAXAUTHNAMEEXTS;i++)
- if(authnameexts[i].persistant && anp->exts[i]!=NULL)
+ if(authnameexts[i].persistent && anp->exts[i]!=NULL)
return;
triggerhook(HOOK_AUTH_LOSTAUTHNAME, (void *)anp);