#include "../parser/parser.h"
#include <stdlib.h>
#include <string.h>
+#include <stdint.h>
/*
* handlenickmsg:
unsigned long userid;
if (cargc==2) { /* rename */
+ char oldnick[NICKLEN+1];
+ void *harg[2];
+
/* Nyklon 1017697578 */
timestamp=strtol(cargv[1],NULL,10);
np=getnickbynumericstr(sender);
Error("nick",ERR_ERROR,"Rename from non-existent sender %s",sender);
return CMD_OK;
}
+
+ strncpy(oldnick,np->nick,NICKLEN);
+ oldnick[NICKLEN]='\0';
+ harg[0]=(void *)np;
+ harg[1]=(void *)oldnick;
+
np2=getnickbynick(cargv[0]);
if (np==np2) {
/* The new and old nickname have the same hash, this means a rename to the same name in
* match the existing timestamp, and we can bypass all the collision checking and hash fettling. */
if (np->timestamp!=timestamp) {
Error("nick",ERR_WARNING,"Rename to same nickname with different timestamp (%s(%jd) -> %s(%jd))",
- np->nick,np->timestamp,cargv[0],timestamp);
+ np->nick,(intmax_t)np->timestamp,cargv[0], (intmax_t)timestamp);
np->timestamp=timestamp;
}
strncpy(np->nick,cargv[0],NICKLEN);
np->nick[NICKLEN]='\0';
- triggerhook(HOOK_NICK_RENAME,np);
+ triggerhook(HOOK_NICK_RENAME,harg);
return CMD_OK;
}
if (np2!=NULL) {
strncpy(np->nick,cargv[0],NICKLEN);
np->nick[NICKLEN]='\0';
addnicktohash(np);
- triggerhook(HOOK_NICK_RENAME,np);
+ triggerhook(HOOK_NICK_RENAME,harg);
} else if (cargc>=8) { /* new nick */
/* Jupiler 2 1016645147 ~Jupiler www.iglobal.be +ir moo [FUTURE CRAP HERE] DV74O] BNBd7 :Jupiler */
timestamp=strtol(cargv[2],NULL,10);
np->ipnode = refnode(iptree, &ipaddress, PATRICIA_MAXBITS);
node_increment_usercount(np->ipnode);
+ np->away=NULL;
np->shident=NULL;
np->sethost=NULL;
np->opername=NULL;
nick *target;
unsigned long userid;
time_t accountts;
- u_int64_t accountflags, oldflags;
+ u_int64_t accountflags=0, oldflags;
if (cargc<4) {
return CMD_OK;
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]);
return CMD_OK;
}
+int handleawaymsg(void *source, int cargc, char **cargv) {
+ nick *sender;
+
+ /* Check source is a valid user */
+ if (!(sender=getnickbynumericstr(source))) {
+ return CMD_OK;
+ }
+
+ /* Done with the old away message either way */
+ freesstring(sender->away);
+ sender->away=NULL;
+
+ /* If we have an arg and it isn't an empty string, this sets a new message */
+ if (cargc > 0 && *(cargv[0])) {
+ sender->away=getsstring(cargv[0], AWAYLEN);
+ }
+
+ return CMD_OK;
+}