]> jfr.im git - irc/quakenet/newserv.git/blobdiff - localuser/localuser.c
LOCALUSER: localuserkill() now triggers the HOOK_NICK_KILL trigger.
[irc/quakenet/newserv.git] / localuser / localuser.c
index f5684fdf45d48789fd3b2d2d76676fa26757ff00..c7db7cb1f90a66ac8dc3763ac5b74f320cd98912 100644 (file)
@@ -13,6 +13,7 @@
 #include <string.h>
 #include <stdarg.h>
 #include <stdio.h>
+#include <inttypes.h>
 
 MODULE_VERSION("");
 
@@ -191,7 +192,7 @@ int renamelocaluser(nick *np, char *newnick) {
       /* Case only name change */
       strncpy(np->nick,newnick,NICKLEN);
       np->nick[NICKLEN]='\0';
-      irc_send("%s N %s %d",iptobase64(ipbuf, &(np->p_ipaddr), sizeof(ipbuf), 1),np->nick,np->timestamp);
+      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);     
       return 0;
     } else {
@@ -206,7 +207,7 @@ int renamelocaluser(nick *np, char *newnick) {
   strncpy(np->nick,newnick,NICKLEN);
   np->nick[NICKLEN]='\0';
   addnicktohash(np);
-  irc_send("%s N %s %d",longtonumeric(np->numeric,5),np->nick,np->timestamp);
+  irc_send("%s N %s %jd",longtonumeric(np->numeric,5),np->nick,(intmax_t)np->timestamp);
   triggerhook(HOOK_NICK_RENAME,np);
   
   return 0;
@@ -287,7 +288,7 @@ void sendnickmsg(nick *np) {
   if (IsAccount(np)) {
     if (np->auth) {
       if(np->auth->flags) {
-        snprintf(accountbuf,sizeof(accountbuf)," %s:%ld:%lu:%llu",np->authname,np->accountts,np->auth->userid,np->auth->flags);
+        snprintf(accountbuf,sizeof(accountbuf)," %s:%ld:%lu:%"PRIu64,np->authname,np->accountts,np->auth->userid,np->auth->flags);
       } else {
         snprintf(accountbuf,sizeof(accountbuf)," %s:%ld:%lu",np->authname,np->accountts,np->auth->userid);
       }
@@ -512,6 +513,8 @@ void sethostuser(nick *target, char *ident, char *host) {
 void _killuser(nick *source, nick *target, char *reason) {
   char senderstr[6];
   char sourcestring[HOSTLEN+NICKLEN+3];
+  char reasonstr[512];
+  void *args[2];
 
   if (!source) {
     /* If we have a null nick, use the server.. */
@@ -522,7 +525,15 @@ void _killuser(nick *source, nick *target, char *reason) {
     sprintf(sourcestring,"%s!%s",source->host->name->content, source->nick);
   }
 
-  irc_send("%s D %s :%s (%s)",senderstr,longtonumeric(target->numeric,5),sourcestring,reason);
+  snprintf(reasonstr,512,"%s (%s)",sourcestring,reason);
+  reasonstr[511]='\0';
+
+  irc_send("%s D %s :%s",senderstr,longtonumeric(target->numeric,5),reasonstr);
+  
+  args[0]=target;
+  args[1]=reasonstr;
+  triggerhook(HOOK_NICK_KILL, args);
+
   deletenick(target);
 }
 
@@ -561,10 +572,10 @@ void checkpendingkills(int hooknum, void *arg) {
 }
 
 void sendaccountmessage(nick *np) {
-  if (connected) {
+  if (connected && IsAccount(np)) {
     if (np->auth) {
       if (np->auth->flags) {
-        irc_send("%s AC %s %s %ld %lu %llu",mynumeric->content, longtonumeric(np->numeric,5), np->authname, np->accountts, np->auth->userid, np->auth->flags);
+        irc_send("%s AC %s %s %ld %lu %"PRIu64,mynumeric->content, longtonumeric(np->numeric,5), np->authname, np->accountts, np->auth->userid, np->auth->flags);
       } else {
         irc_send("%s AC %s %s %ld %lu",mynumeric->content, longtonumeric(np->numeric,5), np->authname, np->accountts, np->auth->userid);
       }
@@ -619,7 +630,7 @@ void localusersetaccountflags(authname *anp, u_int64_t accountflags) {
   arg[1] = &oldflags;
   anp->flags = accountflags;
 
-  for(np=anp->nicks;np;np=np->next)
+  for(np=anp->nicks;np;np=np->nextbyauthname)
     sendaccountmessage(np);
 
   triggerhook(HOOK_AUTH_FLAGSUPDATED, arg);