From: Gunnar Beutner Date: Sun, 16 Feb 2014 04:03:37 +0000 (+0100) Subject: Make whois functionality usable by other modules. X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/dc1175caa926433a4ace39d83d998adc8e4fe623 Make whois functionality usable by other modules. --- diff --git a/control/control.c b/control/control.c index 29d64f94..6c9fd4d4 100644 --- a/control/control.c +++ b/control/control.c @@ -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; } diff --git a/control/control.h b/control/control.h index c4bc6298..c82acb0d 100644 --- a/control/control.h +++ b/control/control.h @@ -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