X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/ad740380e68eca0756c5b869d3e013fb1acc7824..78546f2b0f59b5c8fede1ce5535972716eb17041:/newsearch/ns-nick.c diff --git a/newsearch/ns-nick.c b/newsearch/ns-nick.c index 60505adf..aa9c0bd2 100644 --- a/newsearch/ns-nick.c +++ b/newsearch/ns-nick.c @@ -23,31 +23,37 @@ struct searchNode *nick_parse(searchCtx *ctx, int argc, char **argv) { return NULL; } - switch (ctx->type) { - case SEARCHTYPE_CHANNEL: + if (ctx->searchcmd == reg_chansearch) { + struct searchNode *nickname; + char *p; + if (argc!=1) { parseError="nick: usage: (nick target)"; free(localdata); return NULL; } - if ((localdata->np=getnickbynick(argv[0]))==NULL) { + + if (!(nickname=argtoconststr("nick", ctx, argv[0], &p))) { + free(localdata); + return NULL; + } + + localdata->np=getnickbynick(p); + (nickname->free)(ctx, nickname); + if (localdata->np==NULL) { parseError="nick: unknown nickname"; free(localdata); return NULL; } - break; - - case SEARCHTYPE_NICK: + } else if (ctx->searchcmd == reg_nicksearch) { if (argc) { parseError="nick: usage: (match (nick) target)"; free(localdata); return NULL; } localdata->np = NULL; - break; - - default: - parseError="nick: unsupported search type"; + } else { + parseError="nick: invalid search command"; free(localdata); return NULL; } @@ -59,7 +65,7 @@ struct searchNode *nick_parse(searchCtx *ctx, int argc, char **argv) { return NULL; } - if (ctx->type == SEARCHTYPE_CHANNEL) + if (ctx->searchcmd == reg_chansearch) thenode->returntype = RETURNTYPE_BOOL; else thenode->returntype = RETURNTYPE_STRING; @@ -77,17 +83,14 @@ void *nick_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput) { localdata = thenode->localdata; - switch (ctx->type) { - case SEARCHTYPE_CHANNEL: + if (ctx->searchcmd == reg_chansearch) { cip = (chanindex *)theinput; if (cip->channel==NULL || getnumerichandlefromchanhash(cip->channel->users, localdata->np->numeric)==NULL) return (void *)0; return (void *)1; - - default: - case SEARCHTYPE_NICK: + } else { np = (nick *)theinput; return np->nick;