1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-12 19:14:46 +02:00

More code cleanups to get rid of useless casts and other useless

structures such as:
-       lp->value.cp = (char *)MyMalloc(strlen(mask) + 1);
-       (void)strcpy(lp->value.cp, mask);
+       lp->value.cp = strdup(mask);
This commit is contained in:
Bram Matthys
2018-04-22 14:28:22 +02:00
parent 680715b1b5
commit d5d446c38d
25 changed files with 86 additions and 108 deletions
-2
View File
@@ -327,14 +327,12 @@ extern void send_umode_out(aClient *, aClient *, long);
extern void free_client(aClient *);
extern void free_link(Link *);
extern void free_ban(Ban *);
extern void free_class(aClass *);
extern void free_user(anUser *, aClient *);
extern int find_str_match_link(Link *, char *);
extern void free_str_list(Link *);
extern Link *make_link();
extern Ban *make_ban();
extern anUser *make_user(aClient *);
extern aClass *make_class();
extern aServer *make_server();
extern aClient *make_client(aClient *, aClient *);
extern Link *find_user_link(Link *, aClient *);
+2 -2
View File
@@ -63,7 +63,7 @@ Command *CommandAdd(Module *module, char *cmd, int (*func)(), unsigned char para
if (module)
{
ModuleObject *cmdobj = (ModuleObject *)MyMallocEx(sizeof(ModuleObject));
ModuleObject *cmdobj = MyMallocEx(sizeof(ModuleObject));
command = MyMallocEx(sizeof(Command));
command->cmd = c;
command->cmd->owner = module;
@@ -129,7 +129,7 @@ void CommandDel(Command *command) {
DelListItem(command->cmd, CommandHash[toupper(*command->cmd->cmd)]);
if (command->cmd->owner) {
ModuleObject *cmdobj;
for (cmdobj = command->cmd->owner->objects; cmdobj; cmdobj = (ModuleObject *)cmdobj->next) {
for (cmdobj = command->cmd->owner->objects; cmdobj; cmdobj = cmdobj->next) {
if (cmdobj->type == MOBJ_COMMAND && cmdobj->object.command == command) {
DelListItem(cmdobj,command->cmd->owner->objects);
MyFree(cmdobj);
+9 -9
View File
@@ -203,7 +203,7 @@ Isupport *IsupportFind(const char *token)
Isupport *IsupportAdd(Module *module, const char *token, const char *value)
{
Isupport *isupport;
char *c;
const char *c;
if (IsupportFind(token))
{
@@ -214,8 +214,8 @@ Isupport *IsupportAdd(Module *module, const char *token, const char *value)
/* draft-brocklesby-irc-isupport:
* token = a-zA-Z0-9 and 20 or less characters
* value = ASCII 0x21 - 0x7E
*/
for (c = (char *)token; c && *c; c++)
*/
for (c = token; c && *c; c++)
{
if (!isalnum(*c))
{
@@ -230,7 +230,7 @@ Isupport *IsupportAdd(Module *module, const char *token, const char *value)
module->errorcode = MODERR_INVALID;
return NULL;
}
for (c = (char *)value; c && *c; c++)
for (c = value; c && *c; c++)
{
if (*c < '!' || *c > '~')
{
@@ -249,11 +249,11 @@ Isupport *IsupportAdd(Module *module, const char *token, const char *value)
make_isupportstrings();
if (module)
{
ModuleObject *isupportobj = MyMallocEx(sizeof(ModuleObject));
isupportobj->object.isupport = isupport;
isupportobj->type = MOBJ_ISUPPORT;
AddListItem(isupportobj, module->objects);
module->errorcode = MODERR_NOERROR;
ModuleObject *isupportobj = MyMallocEx(sizeof(ModuleObject));
isupportobj->object.isupport = isupport;
isupportobj->type = MOBJ_ISUPPORT;
AddListItem(isupportobj, module->objects);
module->errorcode = MODERR_NOERROR;
}
return isupport;
}
+1 -1
View File
@@ -216,7 +216,7 @@ anAuthStruct *Auth_ConvertConf2AuthStruct(ConfigEntry *ce)
if (type == -1)
type = AUTHTYPE_PLAINTEXT;
as = (anAuthStruct *) MyMalloc(sizeof(anAuthStruct));
as = MyMallocEx(sizeof(anAuthStruct));
as->data = strdup(ce->ce_vardata);
as->type = type;
return as;
+6 -7
View File
@@ -190,7 +190,7 @@ Member *make_member(void)
{
for (i = 1; i <= (4072/sizeof(Member)); ++i)
{
lp = (Member *)MyMallocEx(sizeof(Member));
lp = MyMallocEx(sizeof(Member));
lp->cptr = NULL;
lp->flags = 0;
lp->next = freemember;
@@ -230,7 +230,7 @@ Membership *make_membership(int local)
{
for (i = 1; i <= (4072/sizeof(Membership)); i++)
{
lp = (Membership *)MyMallocEx(sizeof(Membership));
lp = MyMallocEx(sizeof(Membership));
lp->next = freemembership;
freemembership = lp;
}
@@ -250,7 +250,7 @@ Membership *make_membership(int local)
{
for (i = 1; i <= (4072/sizeof(MembershipL)); i++)
{
lp2 = (MembershipL *)MyMalloc(sizeof(MembershipL));
lp2 = MyMallocEx(sizeof(MembershipL));
lp2->next = (Membership *) freemembershipL;
freemembershipL = lp2;
}
@@ -300,7 +300,7 @@ void free_membership(Membership *lp, int local)
*/
aClient *find_chasing(aClient *sptr, char *user, int *chasing)
{
aClient *who = find_client(user, (aClient *)NULL);
aClient *who = find_client(user, NULL);
if (chasing)
*chasing = 0;
@@ -381,7 +381,6 @@ int add_listmode(Ban **list, aClient *cptr, aChannel *chptr, char *banid)
return -1;
}
ban = make_ban();
bzero((char *)ban, sizeof(Ban));
ban->next = *list;
ban->banstr = strdup(banid);
ban->who = strdup(cptr->name);
@@ -1083,7 +1082,7 @@ aChannel *get_channel(aClient *cptr, char *chname, int flag)
len = CHANNELLEN;
*(chname + CHANNELLEN) = '\0';
}
if ((chptr = find_channel(chname, (aChannel *)NULL)))
if ((chptr = find_channel(chname, NULL)))
return (chptr);
if (flag == CREATE)
{
@@ -1246,7 +1245,7 @@ void sub1_from_channel(aChannel *chptr)
chptr->nextch->prevch = chptr->prevch;
(void)del_from_channel_hash_table(chptr->chname, chptr);
IRCstats.channels--;
MyFree((char *)chptr);
MyFree(chptr);
}
}
+2 -2
View File
@@ -66,7 +66,7 @@ Event *EventAddEx(Module *module, char *name, long every, long howmany,
module->errorcode = MODERR_INVALID;
return NULL;
}
newevent = (Event *) MyMallocEx(sizeof(Event));
newevent = MyMallocEx(sizeof(Event));
newevent->name = strdup(name);
newevent->howmany = howmany;
newevent->every = every;
@@ -77,7 +77,7 @@ Event *EventAddEx(Module *module, char *name, long every, long howmany,
newevent->owner = module;
AddListItem(newevent,events);
if (module) {
ModuleObject *eventobj = (ModuleObject *)MyMallocEx(sizeof(ModuleObject));
ModuleObject *eventobj = MyMallocEx(sizeof(ModuleObject));
eventobj->object.event = newevent;
eventobj->type = MOBJ_EVENT;
AddListItem(eventobj, module->objects);
+1 -2
View File
@@ -172,10 +172,9 @@ void clear_client_hash_table(void)
void clear_channel_hash_table(void)
{
memset((char *)channelTable, '\0', sizeof(aHashEntry) * CH_MAX);
memset(channelTable, 0, sizeof(channelTable));
}
/*
* add_to_client_hash_table
*/
+6 -25
View File
@@ -247,7 +247,7 @@ aServer *make_server(aClient *cptr)
if (!serv)
{
serv = (aServer *)MyMallocEx(sizeof(aServer));
serv = MyMallocEx(sizeof(aServer));
#ifdef DEBUGMODE
servs.inuse++;
#endif
@@ -345,7 +345,7 @@ void remove_client_from_list(aClient *cptr)
safefree(cptr->serv->features.chanmodes[1]);
safefree(cptr->serv->features.chanmodes[2]);
safefree(cptr->serv->features.chanmodes[3]);
MyFree((char *)cptr->serv);
MyFree(cptr->serv);
#ifdef DEBUGMODE
servs.inuse--;
#endif
@@ -411,7 +411,7 @@ void free_str_list(Link *lp)
while (lp)
{
next = lp->next;
MyFree((char *)lp->value.cp);
MyFree(lp->value.cp);
free_link(lp);
lp = next;
}
@@ -439,7 +439,7 @@ Link *make_link(void)
{
for (i = 1; i <= LINKSIZE; i++)
{
lp = (Link *)MyMalloc(sizeof(Link));
lp = MyMallocEx(sizeof(Link));
lp->next = freelink;
freelink = lp;
}
@@ -475,7 +475,7 @@ Ban *make_ban(void)
{
Ban *lp;
lp = (Ban *) MyMalloc(sizeof(Ban));
lp = MyMallocEx(sizeof(Ban));
#ifdef DEBUGMODE
links.inuse++;
#endif
@@ -484,31 +484,12 @@ Ban *make_ban(void)
void free_ban(Ban *lp)
{
MyFree((char *)lp);
MyFree(lp);
#ifdef DEBUGMODE
links.inuse--;
#endif
}
aClass *make_class(void)
{
aClass *tmp;
tmp = (aClass *)MyMalloc(sizeof(aClass));
#ifdef DEBUGMODE
classs.inuse++;
#endif
return tmp;
}
void free_class(aClass *tmp)
{
MyFree((char *)tmp);
#ifdef DEBUGMODE
classs.inuse--;
#endif
}
#ifdef DEBUGMODE
void send_listinfo(aClient *cptr, char *name)
{
+24 -23
View File
@@ -555,8 +555,8 @@ void *cmodef_put_param(void *fld_in, char *param)
char *cmodef_get_param(void *r_in)
{
ChanFloodProt *r = (ChanFloodProt *)r_in;
static char retbuf[512];
ChanFloodProt *r = (ChanFloodProt *)r_in;
static char retbuf[512];
if (!r)
return NULL;
@@ -787,8 +787,8 @@ void cmodef_free_param(void *r)
void *cmodef_dup_struct(void *r_in)
{
ChanFloodProt *r = (ChanFloodProt *)r_in;
ChanFloodProt *w = (ChanFloodProt *)MyMalloc(sizeof(ChanFloodProt));
ChanFloodProt *r = (ChanFloodProt *)r_in;
ChanFloodProt *w = MyMallocEx(sizeof(ChanFloodProt));
memcpy(w, r, sizeof(ChanFloodProt));
return (void *)w;
@@ -796,11 +796,10 @@ ChanFloodProt *w = (ChanFloodProt *)MyMalloc(sizeof(ChanFloodProt));
int cmodef_sjoin_check(aChannel *chptr, void *ourx, void *theirx)
{
ChanFloodProt *our = (ChanFloodProt *)ourx;
ChanFloodProt *their = (ChanFloodProt *)theirx;
char *x;
int i;
ChanFloodProt *our = (ChanFloodProt *)ourx;
ChanFloodProt *their = (ChanFloodProt *)theirx;
char *x;
int i;
if (compare_floodprot_modes(our, their) == 0)
return EXSJ_SAME;
@@ -974,7 +973,7 @@ int floodprot_remote_nickchange(aClient *cptr, aClient *sptr, char *oldnick)
int floodprot_chanmode_del(aChannel *chptr, int modechar)
{
ChanFloodProt *chp;
ChanFloodProt *chp;
if (!IsFloodLimit(chptr))
return 0;
@@ -1099,7 +1098,7 @@ RemoveFld *removefld_list = NULL;
RemoveFld *floodprottimer_find(aChannel *chptr, char mflag)
{
RemoveFld *e;
RemoveFld *e;
for (e=removefld_list; e; e=e->next)
{
@@ -1131,9 +1130,9 @@ void strccat(char *s, char c)
*/
void floodprottimer_add(aChannel *chptr, char mflag, time_t when)
{
RemoveFld *e = NULL;
unsigned char add=1;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
RemoveFld *e = NULL;
unsigned char add=1;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
if (strchr(chp->timers_running, mflag))
{
@@ -1168,8 +1167,8 @@ ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
void floodprottimer_del(aChannel *chptr, char mflag)
{
RemoveFld *e;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
RemoveFld *e;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
if (chp && !strchr(chp->timers_running, mflag))
return; /* nothing to remove.. */
@@ -1193,7 +1192,8 @@ ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
long get_mode_bitbychar(char m)
{
aCtab *tab = &cFlagTab[0];
aCtab *tab = &cFlagTab[0];
while(tab->mode != 0x0)
{
if (tab->flag == m)
@@ -1258,7 +1258,8 @@ EVENT(modef_event)
void floodprottimer_stopchantimers(aChannel *chptr)
{
RemoveFld *e = removefld_list;
RemoveFld *e = removefld_list;
while(e)
{
if (e->chptr == chptr)
@@ -1272,7 +1273,7 @@ RemoveFld *e = removefld_list;
int do_floodprot(aChannel *chptr, int what)
{
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
if (!chp || !chp->l[what]) /* no +f or not restricted */
return 0;
@@ -1302,10 +1303,10 @@ ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
void do_floodprot_action(aChannel *chptr, int what, char *text)
{
char m;
int mode = 0;
Cmode_t extmode = 0;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
char m;
int mode = 0;
Cmode_t extmode = 0;
ChanFloodProt *chp = (ChanFloodProt *)GETPARASTRUCT(chptr, 'f');
m = chp->a[what];
if (!m)
+13 -10
View File
@@ -34,8 +34,11 @@ int link_can_join_limitexceeded(aClient *sptr, aChannel *chptr, char *key, char
MOD_INIT(link)
{
CmodeInfo req;
ModuleSetOptions(modinfo->handle, MOD_OPT_PERM_RELOADABLE, 1);
MARK_AS_OFFICIAL_MODULE(modinfo);
memset(&req, 0, sizeof(req));
req.paracount = 1;
req.is_ok = cmodeL_is_ok;
@@ -110,12 +113,12 @@ int cmodeL_is_ok(aClient *sptr, aChannel *chptr, char mode, char *para, int type
void *cmodeL_put_param(void *r_in, char *param)
{
aModeLEntry *r = (aModeLEntry *)r_in;
aModeLEntry *r = (aModeLEntry *)r_in;
if (!r)
{
/* Need to create one */
r = (aModeLEntry *)MyMallocEx(sizeof(aModeLEntry));
r = MyMallocEx(sizeof(aModeLEntry));
}
strlcpy(r->linked, param, sizeof(r->linked));
return (void *)r;
@@ -123,8 +126,8 @@ aModeLEntry *r = (aModeLEntry *)r_in;
char *cmodeL_get_param(void *r_in)
{
aModeLEntry *r = (aModeLEntry *)r_in;
static char retbuf[CHANNELLEN+1];
aModeLEntry *r = (aModeLEntry *)r_in;
static char retbuf[CHANNELLEN+1];
if (!r)
return NULL;
@@ -138,8 +141,8 @@ static char retbuf[CHANNELLEN+1];
*/
char *cmodeL_conv_param(char *param_in, aClient *sptr)
{
static char buf[CHANNELLEN+1];
char *p;
static char buf[CHANNELLEN+1];
char *p;
strlcpy(buf, param_in, sizeof(buf));
clean_channelname(buf);
@@ -159,8 +162,8 @@ void cmodeL_free_param(void *r)
void *cmodeL_dup_struct(void *r_in)
{
aModeLEntry *r = (aModeLEntry *)r_in;
aModeLEntry *w = (aModeLEntry *)MyMalloc(sizeof(aModeLEntry));
aModeLEntry *r = (aModeLEntry *)r_in;
aModeLEntry *w = MyMallocEx(sizeof(aModeLEntry));
memcpy(w, r, sizeof(aModeLEntry));
return (void *)w;
@@ -168,8 +171,8 @@ aModeLEntry *w = (aModeLEntry *)MyMalloc(sizeof(aModeLEntry));
int cmodeL_sjoin_check(aChannel *chptr, void *ourx, void *theirx)
{
aModeLEntry *our = (aModeLEntry *)ourx;
aModeLEntry *their = (aModeLEntry *)theirx;
aModeLEntry *our = (aModeLEntry *)ourx;
aModeLEntry *their = (aModeLEntry *)theirx;
if (!strcmp(our->linked, their->linked))
return EXSJ_SAME;
+1 -2
View File
@@ -76,8 +76,7 @@ CMD_FUNC(m_admin)
sendto_one(sptr, rpl_str(RPL_ADMINME), me.name, sptr->name, me.name);
/* cycle through the list backwards */
for (admin = conf_admin_tail; admin;
admin = (ConfigItem_admin *) admin->prev)
for (admin = conf_admin_tail; admin; admin = admin->prev)
{
if (!admin->next)
sendto_one(sptr, rpl_str(RPL_ADMINLOC1),
+1 -1
View File
@@ -89,7 +89,7 @@ CMD_FUNC(m_invite)
return -1;
}
if (!(acptr = find_person(parv[1], (aClient *)NULL)))
if (!(acptr = find_person(parv[1], NULL)))
{
sendto_one(sptr, err_str(ERR_NOSUCHNICK),
me.name, sptr->name, parv[1]);
+1 -1
View File
@@ -103,7 +103,7 @@ CMD_FUNC(m_kill)
path[TOPICLEN] = '\0';
if (MyClient(sptr))
user = (char *)canonize(user);
user = canonize(user);
for (p = NULL, nick = strtoken(&p, user, ","); nick;
nick = strtoken(&p, NULL, ","))
+1 -1
View File
@@ -101,7 +101,7 @@ CMD_FUNC(m_names)
}
}
chptr = find_channel(para, (aChannel *)NULL);
chptr = find_channel(para, NULL);
if (!chptr || (!ShowChannel(sptr, chptr) && !ValidatePermissionsForPath("override:see:names:secret",sptr,NULL,chptr,NULL)))
{
+1 -1
View File
@@ -65,7 +65,7 @@ int do_svsnolag(aClient *cptr, aClient *sptr, int parc, char *parv[], int show_c
if (parc < 3)
return 0;
if (!(acptr = find_person(parv[2], (aClient *)NULL)))
if (!(acptr = find_person(parv[2], NULL)))
return 0;
if (!MyClient(acptr))
+1 -1
View File
@@ -78,7 +78,7 @@ CMD_FUNC(m_swhois)
if (parc < 3)
return 0;
acptr = find_person(parv[1], (aClient *)NULL);
acptr = find_person(parv[1], NULL);
if (!acptr)
return 0;
+1 -1
View File
@@ -260,7 +260,7 @@ int webirc_config_run(ConfigFile *cf, ConfigEntry *ce, int type)
if (!ce || !ce->ce_varname || strcmp(ce->ce_varname, "webirc"))
return 0; /* not interested */
webirc = (ConfigItem_webirc *) MyMallocEx(sizeof(ConfigItem_webirc));
webirc = MyMallocEx(sizeof(ConfigItem_webirc));
webirc->type = WEBIRC_WEBIRC; /* default */
for (cep = ce->ce_entries; cep; cep = cep->ce_next)
+2 -2
View File
@@ -240,9 +240,9 @@ int parse(aClient *cptr, char *buffer, char *bufend)
*/
if (*sender && IsServer(cptr))
{
from = find_client(sender, (aClient *)NULL);
from = find_client(sender, NULL);
if (!from && index(sender, '@'))
from = find_nickserv(sender, (aClient *)NULL);
from = find_nickserv(sender, NULL);
//para[0] = sender;
para[0] = (char *)0xDEADBEEF; /* helps us catch bugs :) -- 2/2 */
+1 -2
View File
@@ -455,8 +455,7 @@ void close_listeners(void)
/* close all 'extra' listening ports we have */
for (aconf = conf_listen; aconf != NULL; aconf = aconf_next)
{
aconf_next = (ConfigItem_listen *) aconf->next;
aconf_next = aconf->next;
if (aconf->flag.temporary)
close_listener(aconf);
}
+1 -1
View File
@@ -127,7 +127,7 @@ void flag_add(char ch)
if (extraflags)
{
char tmp[2] = { ch, 0 };
newextra = (char *)MyMalloc(strlen(extraflags) + 2);
newextra = MyMallocEx(strlen(extraflags) + 2);
strcpy(newextra, extraflags);
strcat(newextra, tmp);
MyFree(extraflags);
+2 -2
View File
@@ -142,7 +142,7 @@ int do_numeric(int numeric, aClient *cptr, aClient *sptr, int parc, char *parv[
for (; (nick = strtoken(&p, parv[1], ",")); parv[1] = NULL)
{
if ((acptr = find_client(nick, (aClient *)NULL)))
if ((acptr = find_client(nick, NULL)))
{
/*
** Drop to bit bucket if for me...
@@ -179,7 +179,7 @@ int do_numeric(int numeric, aClient *cptr, aClient *sptr, int parc, char *parv[
sendto_prefix_one(acptr, sptr, ":%s %d %s%s",
sptr->name, numeric, nick, buffer);
}
else if ((chptr = find_channel(nick, (aChannel *)NULL)))
else if ((chptr = find_channel(nick, NULL)))
sendto_channel_butone(cptr, sptr, chptr, ":%s %d %s%s",
sptr->name, numeric, chptr->chname, buffer);
}
+2 -3
View File
@@ -342,7 +342,7 @@ int check_for_target_limit(aClient *sptr, void *target, const char *name)
** reduce a string of duplicate list entries to contain only the unique
** items. Unavoidably O(n^2).
*/
extern char *canonize(char *buffer)
char *canonize(char *buffer)
{
static char cbuf[2048];
char *s, *t, *cp = cbuf;
@@ -662,8 +662,7 @@ int add_silence(aClient *sptr, char *mask, int senderr)
lp = make_link();
bzero((char *)lp, sizeof(Link));
lp->next = sptr->user->silence;
lp->value.cp = (char *)MyMalloc(strlen(mask) + 1);
(void)strcpy(lp->value.cp, mask);
lp->value.cp = strdup(mask);
sptr->user->silence = lp;
return 0;
}
+1 -1
View File
@@ -688,7 +688,7 @@ void sendto_match_servs(aChannel *chptr, aClient *from, char *format, ...)
mask++;
}
else
mask = (char *)NULL;
mask = NULL;
list_for_each_entry(cptr, &server_list, special_node)
{
+4 -4
View File
@@ -151,8 +151,8 @@ int ssl_pem_passwd_cb(char *buf, int size, int rwflag, void *password)
#endif
if (before)
{
strlcpy(buf, (char *)beforebuf, size);
return (strlen(buf));
strlcpy(buf, beforebuf, size);
return strlen(buf);
}
#ifndef _WIN32
pass = getpass("Password for SSL private key: ");
@@ -164,8 +164,8 @@ int ssl_pem_passwd_cb(char *buf, int size, int rwflag, void *password)
#endif
if (pass)
{
strlcpy(buf, (char *)pass, size);
strlcpy(beforebuf, (char *)pass, sizeof(beforebuf));
strlcpy(buf, pass, size);
strlcpy(beforebuf, pass, sizeof(beforebuf));
before = 1;
SSLKeyPasswd = beforebuf;
return (strlen(buf));
+2 -2
View File
@@ -120,9 +120,9 @@ char *strerror(int err_no)
static char buff[40];
char *errp;
errp = (err_no > sys_nerr ? (char *)NULL : sys_errlist[err_no]);
errp = (err_no > sys_nerr ? NULL : sys_errlist[err_no]);
if (errp == (char *)NULL)
if (errp == NULL)
{
errp = buff;
(void)ircsnprintf(buff, sizeof(buff), "Unknown Error %d", err_no);