]> 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 c549b6f4b18b569d7066605ccbbd20c8b4b6cf0c..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:" FLAG_T_SPECIFIER,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 %lu",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);
       }
@@ -575,7 +586,7 @@ void sendaccountmessage(nick *np) {
 }
 
 /* Auth user, don't use to set flags after authing */
-void localusersetaccount(nick *np, char *accname, unsigned long accid, flag_t accountflags, time_t authTS) {
+void localusersetaccount(nick *np, char *accname, unsigned long accid, u_int64_t accountflags, time_t authTS) {
   if (IsAccount(np)) {
     Error("localuser",ERR_WARNING,"Tried to set account on user %s already authed", np->nick);
     return;
@@ -610,16 +621,17 @@ void localusersetumodes(nick *np, flag_t newmodes) {
   np->umodes = newmodes;
 }
 
-void localusersetaccountflags(authname *anp, flag_t accountflags) {
+void localusersetaccountflags(authname *anp, u_int64_t accountflags) {
   void *arg[2];
   nick *np;
+  u_int64_t oldflags = anp->flags;
 
-  arg[0] = (void *)anp;
-  arg[1] = (void *)(long)anp->flags;
+  arg[0] = anp;
+  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);  
+  triggerhook(HOOK_AUTH_FLAGSUPDATED, arg);
 }