]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Make whois functionality usable by other modules.
authorGunnar Beutner <redacted>
Sun, 16 Feb 2014 04:03:37 +0000 (05:03 +0100)
committerGunnar Beutner <redacted>
Sun, 16 Feb 2014 04:03:37 +0000 (05:03 +0100)
control/control.c
control/control.h

index 29d64f94051d0fe3a1eaec26c44f32cfb2730db9..6c9fd4d491fca648a76adf44803baf5db035be0b 100644 (file)
@@ -286,27 +286,11 @@ void handlewhois(int hooknum, void *arg) {
   controlreply(hooknick,"%s",(char *)arg);
 }
 
-static int controlwhois_plain(void *sender, int cargc, char **cargv) {
-  nick *target;
+void whoisnick(nick *sender, nick *target) {
   channel **channels;
   char buf[BUFSIZE];
   int i;
-  
-  if (cargc<1)
-    return CMD_USAGE;
-  
-  if (cargv[0][0]=='#') {
-    if (!(target=getnickbynumericstr(cargv[0]+1))) {
-      controlreply(sender,"Sorry, couldn't find numeric %s",cargv[0]+1);
-      return CMD_ERROR;
-    }
-  } else {
-    if ((target=getnickbynick(cargv[0]))==NULL) {
-      controlreply((nick *)sender,"Sorry, couldn't find that user");
-      return CMD_ERROR;
-    }
-  }
-  
+
   controlreply((nick *)sender,"Nick      : %s",target->nick);
   controlreply((nick *)sender,"Numeric   : %s",longtonumeric(target->numeric,5));
   controlreply((nick *)sender,"User@Host : %s@%s (%d user(s) on this host)",target->ident,target->host->name->content,target->host->clonecount);
@@ -341,11 +325,11 @@ static int controlwhois_plain(void *sender, int cargc, char **cargv) {
     controlreply((nick *)sender,"Opered as : %s",target->opername->content);
   if (IsAccount(target)) {
     controlreply((nick *)sender,"Account   : %s",target->authname);
-    if (target->accountts) 
+    if (target->accountts)
       controlreply((nick *)sender,"AccountTS : %ld",target->accountts);
     if (target->auth)  {
       controlreply((nick *)sender,"UserID    : %ld",target->auth->userid);
-      if (target->auth->flags) 
+      if (target->auth->flags)
         controlreply((nick *)sender,"AccFlags  : %s",printflags(target->auth->flags,accountflags));
     }
   }
@@ -381,6 +365,27 @@ static int controlwhois_plain(void *sender, int cargc, char **cargv) {
       }
     }
   }
+}
+
+static int controlwhois_plain(void *sender, int cargc, char **cargv) {
+  nick *target;
+  
+  if (cargc<1)
+    return CMD_USAGE;
+  
+  if (cargv[0][0]=='#') {
+    if (!(target=getnickbynumericstr(cargv[0]+1))) {
+      controlreply(sender,"Sorry, couldn't find numeric %s",cargv[0]+1);
+      return CMD_ERROR;
+    }
+  } else {
+    if ((target=getnickbynick(cargv[0]))==NULL) {
+      controlreply((nick *)sender,"Sorry, couldn't find that user");
+      return CMD_ERROR;
+    }
+  }
+  whoisnick(sender, target); 
   
   return CMD_OK;
 }
index c4bc629884941f679b11259bde96ad319cadbc27..c82acb0d471cf45c1b4dee3b97fa7d2406142c73 100644 (file)
@@ -42,6 +42,7 @@ void controlspecialreloadmod(void *arg);
 void controlhelp(nick *np, Command *cmd);
 void controlnswall(int noticelevel, char *format, ...) __attribute__ ((format (printf, 2, 3)));
 char *controlid(nick *);
+void whoisnick(nick *sender, nick *target);
 
 /* NEVER USE THE FOLLOWING IN COMMANDS, you'll end up missing bits off and users'll end up being able to gline people */
 #define __NO_ANYONE      0x000