X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/c7f7a584fd6c8ee4a0ede6e79e8ce2177ab863f0..8855bb48b449ed06cfd3ce528b3c0a77c37cb24b:/newsearch/ns-not.c diff --git a/newsearch/ns-not.c b/newsearch/ns-not.c index c1f28a78..0e8f97a7 100644 --- a/newsearch/ns-not.c +++ b/newsearch/ns-not.c @@ -7,10 +7,10 @@ #include #include -void not_free(struct searchNode *thenode); -void *not_exe(struct searchNode *thenode, void *theinput); +void not_free(searchCtx *ctx, struct searchNode *thenode); +void *not_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput); -struct searchNode *not_parse(int type, int argc, char **argv) { +struct searchNode *not_parse(searchCtx *ctx, int argc, char **argv) { searchNode *thenode, *subnode; if (argc!=1) { @@ -28,7 +28,7 @@ struct searchNode *not_parse(int type, int argc, char **argv) { thenode->exe = not_exe; thenode->free = not_free; - subnode=search_parse(type, argv[0]); /* Propogate the search type */ + subnode=ctx->parser(ctx, argv[0]); /* Propogate the search type */ if (!subnode) { free(thenode); @@ -36,27 +36,31 @@ struct searchNode *not_parse(int type, int argc, char **argv) { } /* Our subnode needs to return a BOOL */ - subnode=coerceNode(thenode, RETURNTYPE_BOOL); - + subnode=coerceNode(ctx, subnode, RETURNTYPE_BOOL); + if(!subnode) { + free(thenode); + return NULL; + } + thenode->localdata=(void *)subnode; return thenode; } -void not_free(struct searchNode *thenode) { +void not_free(searchCtx *ctx, struct searchNode *thenode) { struct searchNode *subnode; subnode=thenode->localdata; - (subnode->free)(subnode); + (subnode->free)(ctx, subnode); free(thenode); } -void *not_exe(struct searchNode *thenode, void *theinput) { +void *not_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput) { struct searchNode *subnode; subnode=thenode->localdata; - if ((subnode->exe)(subnode, theinput)) { + if ((subnode->exe)(ctx, subnode, theinput)) { return (void *)0; } else { return (void *)1;