]> jfr.im git - irc/quakenet/newserv.git/commitdiff
NICK: send oldnick as part of HOOK_NICK_RENAME.
authorChris Porter <redacted>
Sun, 4 Sep 2011 11:26:14 +0000 (12:26 +0100)
committerChris Porter <redacted>
Sun, 4 Sep 2011 11:26:14 +0000 (12:26 +0100)
chanserv/chanserv_protect.c
core/hooks.h
localuser/localuser.c
lua/luabot.c
nick/nickhandlers.c
regexgline/regexgline.c

index 4dee25ced707a1697fddb852500ae4e0b4d5a865..d42237d28ae92cdebefdfdc7e040f80652a3ab9d 100644 (file)
@@ -14,13 +14,14 @@ MODULE_VERSION(QVERSION)
 #define PROTECTTIME    60 /* How long you have to renick if you encroach.. */
 
 void csp_handlenick(int hooknum, void *arg);
+void csp_handlerename(int hooknum, void *arg);
 void csp_freenick(int hooknum, void *arg);
 void csp_timerfunc (void *arg);
 int csp_doclaimnick(void *source, int cargc, char **cargv);
 
 void _init() {
   registerhook(HOOK_NICK_NEWNICK, csp_handlenick);
-  registerhook(HOOK_NICK_RENAME, csp_handlenick);
+  registerhook(HOOK_NICK_RENAME, csp_handlerename);
 
   registerhook(HOOK_NICK_NEWNICK, csp_freenick);
   registerhook(HOOK_NICK_ACCOUNT, csp_freenick);
@@ -33,7 +34,7 @@ void _fini() {
   int i;
 
   deregisterhook(HOOK_NICK_NEWNICK, csp_handlenick);
-  deregisterhook(HOOK_NICK_RENAME, csp_handlenick);
+  deregisterhook(HOOK_NICK_RENAME, csp_handlerename);
 
   deregisterhook(HOOK_NICK_NEWNICK, csp_freenick);
   deregisterhook(HOOK_NICK_ACCOUNT, csp_freenick);
@@ -52,6 +53,11 @@ void _fini() {
       }
 }
 
+void csp_handlerename(int hooknum, void *arg) {
+  void **harg = (void **)arg;
+  csp_handlenick(hooknum, harg[0]);
+}
+
 void csp_handlenick(int hooknum, void *arg) {
   nick *np=arg;
   reguser *rup;
index 4841116e137f12ffe46b67769afd3e3bb4a616c3..8fcace7d84303a95a0e905e539b4944d31345f46 100644 (file)
@@ -32,7 +32,7 @@
 #define HOOK_SERVER_LINKED         204  /* Argument is number of server */
 
 #define HOOK_NICK_NEWNICK          300  /* Argument is nick* */
-#define HOOK_NICK_RENAME           301  /* Argument is nick* */
+#define HOOK_NICK_RENAME           301  /* Argument is void*[2] (nick *, oldnick) */
 #define HOOK_NICK_LOSTNICK         302  /* Argument is nick* */
 #define HOOK_NICK_WHOISCHANNELS    303  /* Argument is nick*[2] (sender, target) */
 #define HOOK_NICK_ACCOUNT          304  /* Argument is nick* */
index dd11918b901a4eee813157d1a520c6a4bf193f8d..3bd797d477ab1da803465c2b5bc9877e938b84c1 100644 (file)
@@ -178,7 +178,9 @@ int renamelocaluser(nick *np, char *newnick) {
   nick *np2;
   char ipbuf[25];
   time_t timestamp=getnettime();
-  
+  void *harg[2];
+  char oldnick[NICKLEN+1];
+
   if (!np)
     return -1;
   
@@ -188,13 +190,18 @@ int renamelocaluser(nick *np, char *newnick) {
   if (homeserver(np->numeric)!=mylongnum) 
     return -1;
 
+  strncpy(oldnick,np->nick,NICKLEN);
+  oldnick[NICKLEN]='\0';
+  harg[0]=(void *)np;
+  harg[1]=(void *)oldnick;
+
   if ((np2=getnickbynick(newnick))) {
     if (np2==np) {
       /* Case only name change */
       strncpy(np->nick,newnick,NICKLEN);
       np->nick[NICKLEN]='\0';
       irc_send("%s N %s %jd",iptobase64(ipbuf, &(np->p_ipaddr), sizeof(ipbuf), 1),np->nick,(intmax_t)np->timestamp);
-      triggerhook(HOOK_NICK_RENAME,np);     
+      triggerhook(HOOK_NICK_RENAME,harg);     
       return 0;
     } else {
       /* Kill other user and drop through */
@@ -209,7 +216,7 @@ int renamelocaluser(nick *np, char *newnick) {
   np->nick[NICKLEN]='\0';
   addnicktohash(np);
   irc_send("%s N %s %jd",longtonumeric(np->numeric,5),np->nick,(intmax_t)np->timestamp);
-  triggerhook(HOOK_NICK_RENAME,np);
+  triggerhook(HOOK_NICK_RENAME,harg);
   
   return 0;
 }
index 8f5501fdc16790580510752cdab5c3049095cc05..9e7ae143748a1e9fc79b987c13ff1b56c354f123 100644 (file)
@@ -360,12 +360,14 @@ void lua_onpart(int hooknum, void *arg) {
 }
 
 void lua_onrename(int hooknum, void *arg) {
-  nick *np = (void *)arg;
+  void **harg = (void **)arg;
+  nick *np = harg[0];
+  char *oldnick = harg[1];
 
   if(!np)
     return;
 
-  lua_avpcall("irc_onrename", "l", np->numeric);
+  lua_avpcall("irc_onrename", "ls", np->numeric, oldnick);
 }
 
 void lua_onquit(int hooknum, void *arg) {
index 282139f3070696df4583b82346e34c13b8a08265..4b280cc6f450441db2ab4aacf0550e55f03128a9 100644 (file)
@@ -34,6 +34,9 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
   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);
@@ -41,6 +44,12 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
       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 
@@ -53,7 +62,7 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
       }
       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) {
@@ -84,7 +93,7 @@ int handlenickmsg(void *source, int cargc, char **cargv) {
     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);
index 76512cd9a826a43f5c60be81d03b1c069bebee0e..33f493db6c73e17e1b57e19704a8e21d953d3c51 100644 (file)
@@ -174,7 +174,7 @@ void _fini(void) {
   
   if(started) {
     deregisterhook(HOOK_NICK_NEWNICK, &rg_nick);
-    deregisterhook(HOOK_NICK_RENAME, &rg_nick);
+    deregisterhook(HOOK_NICK_RENAME, &rg_rename);
     deregisterhook(HOOK_NICK_LOSTNICK, &rg_lostnick);
     deregistercontrolcmd("regexspew", rg_spew);
     deregistercontrolcmd("regexglist", rg_glist);
@@ -442,7 +442,7 @@ static void dbloadfini(DBConn *dbconn, void *arg) {
   registercontrolhelpcmd("regexrescan", NO_OPER, 1, &rg_rescan, "Usage: regexrescan ?-g?\nRescans the net for missed clients, optionally glining matches (used for debugging).");
 
   registerhook(HOOK_NICK_NEWNICK, &rg_nick);
-  registerhook(HOOK_NICK_RENAME, &rg_nick);
+  registerhook(HOOK_NICK_RENAME, &rg_rename);
   registerhook(HOOK_NICK_LOSTNICK, &rg_lostnick);
   rg_startup();
 
@@ -483,6 +483,11 @@ static void rg_gline_match(struct rg_struct *rp, nick *np, char *hostname, void
   rg_dogline(gll, np, rp, hostname);
 }
 
+void rg_rename(int hooknum, void *arg) {
+  void **harg = (void **)arg;
+  rg_nick(hooknum, harg[0]);
+}
+
 void rg_nick(int hooknum, void *arg) {
   nick *np = (nick *)arg;
   struct rg_glinelist gll;