X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/27ce0548659b866469bb01b639aab0682a4ea667..f28b61f26dec986fb87602b5c75ad812b8297d85:/newsearch/ns-or.c diff --git a/newsearch/ns-or.c b/newsearch/ns-or.c index c8d1381c..e2808b31 100644 --- a/newsearch/ns-or.c +++ b/newsearch/ns-or.c @@ -7,15 +7,15 @@ #include #include -void or_free(struct searchNode *thenode); -void *or_exe(struct searchNode *thenode, int type, void *theinput); +void or_free(searchCtx *ctx, struct searchNode *thenode); +void *or_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput); struct or_localdata { int count; searchNode **nodes; }; -struct searchNode *or_parse(int type, int argc, char **argv) { +struct searchNode *or_parse(searchCtx *ctx, int argc, char **argv) { searchNode *thenode, *subnode; struct or_localdata *localdata; int i; @@ -48,11 +48,12 @@ struct searchNode *or_parse(int type, int argc, char **argv) { thenode->free = or_free; for (i=0;iparser(ctx, argv[i]); /* Propogate the search type */ + subnode=coerceNode(ctx, subnode, RETURNTYPE_BOOL); /* BOOL please */ if (subnode) { localdata->nodes[localdata->count++] = subnode; } else { - or_free(thenode); + or_free(ctx, thenode); return NULL; } } @@ -60,13 +61,13 @@ struct searchNode *or_parse(int type, int argc, char **argv) { return thenode; } -void or_free(struct searchNode *thenode) { +void or_free(searchCtx *ctx, struct searchNode *thenode) { struct or_localdata *localdata; int i; localdata=thenode->localdata; for (i=0;icount;i++) { - (localdata->nodes[i]->free)(localdata->nodes[i]); + (localdata->nodes[i]->free)(ctx, localdata->nodes[i]); } free(localdata->nodes); @@ -74,35 +75,16 @@ void or_free(struct searchNode *thenode) { free(thenode); } -void *or_exe(struct searchNode *thenode, int type, void *theinput) { +void *or_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput) { int i; - void *ret; struct or_localdata *localdata; localdata=thenode->localdata; for (i=0;icount;i++) { - ret = (localdata->nodes[i]->exe)(localdata->nodes[i], RETURNTYPE_BOOL, theinput); - if (ret) { - switch (type) { - case RETURNTYPE_STRING: - return "1"; - - case RETURNTYPE_INT: - case RETURNTYPE_BOOL: - default: - return (void *)1; - } - } + if ((localdata->nodes[i]->exe)(ctx, localdata->nodes[i], theinput)) + return (void *)1; } - switch(type) { - case RETURNTYPE_STRING: - return ""; - - case RETURNTYPE_INT: - case RETURNTYPE_BOOL: - default: - return NULL; - } + return NULL; }