]> jfr.im git - irc/quakenet/newserv.git/blobdiff - newsearch/ns-lt.c
Merge branch 'master' into chanserv-live
[irc/quakenet/newserv.git] / newsearch / ns-lt.c
index d15c585b1398d26356b115872446476257b11deb..7bed1fb2510ada63c84cecd050c243fa8bb0a59e 100644 (file)
@@ -14,10 +14,10 @@ struct lt_localdata {
   struct searchNode **nodes;
 };
 
-void lt_free(struct searchNode *thenode);
-void *lt_exe(struct searchNode *thenode, void *theinput);
+void lt_free(searchCtx *ctx, struct searchNode *thenode);
+void *lt_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput);
 
-struct searchNode *lt_parse(int type, int argc, char **argv) {
+struct searchNode *lt_parse(searchCtx *ctx, int argc, char **argv) {
   struct lt_localdata *localdata;
   struct searchNode *thenode;
   int i;
@@ -49,15 +49,15 @@ struct searchNode *lt_parse(int type, int argc, char **argv) {
   
   for (i=0;i<argc;i++) {
     /* Parse the node.. */
-    localdata->nodes[i] = search_parse(type, argv[i]);
+    localdata->nodes[i] = ctx->parser(ctx, argv[i]);
     
     /* Subsequent nodes get coerced to match the type of the first node */
     if (i)
-      localdata->nodes[i]=coerceNode(localdata->nodes[i],localdata->type);
+      localdata->nodes[i]=coerceNode(ctx, localdata->nodes[i],localdata->type);
 
     /* If a node didn't parse, give up */    
     if (!localdata->nodes[i]) {
-      lt_free(thenode);
+      lt_free(ctx, thenode);
       return NULL;
     }
     
@@ -72,7 +72,7 @@ struct searchNode *lt_parse(int type, int argc, char **argv) {
   return thenode;
 }
 
-void lt_free(struct searchNode *thenode) {
+void lt_free(searchCtx *ctx, struct searchNode *thenode) {
   struct lt_localdata *localdata;
   int i;
 
@@ -80,7 +80,7 @@ void lt_free(struct searchNode *thenode) {
   
   for (i=0;i<localdata->count;i++) {
     if (localdata->nodes[i])
-      (localdata->nodes[i]->free)(localdata->nodes[i]);
+      (localdata->nodes[i]->free)(ctx, localdata->nodes[i]);
   }
   
   free(localdata->nodes);
@@ -88,7 +88,7 @@ void lt_free(struct searchNode *thenode) {
   free(thenode);
 }
 
-void *lt_exe(struct searchNode *thenode, void *theinput) {
+void *lt_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput) {
   int i;
   char *strval;
   int intval;
@@ -102,17 +102,17 @@ void *lt_exe(struct searchNode *thenode, void *theinput) {
   switch (localdata->type) {
   case RETURNTYPE_INT:
   case RETURNTYPE_BOOL:
-    intval = (int)((long)(localdata->nodes[0]->exe)(localdata->nodes[0], theinput));
+    intval = (int)((long)(localdata->nodes[0]->exe)(ctx, localdata->nodes[0], theinput));
     for (i=1;i<localdata->count;i++) {
-      if ((int)((long)(localdata->nodes[i]->exe)(localdata->nodes[i], theinput) <= intval))
+      if ((int)((long)(localdata->nodes[i]->exe)(ctx, localdata->nodes[i], theinput) <= intval))
        return (void *)0;
     }
     return (void *)1;
     
   case RETURNTYPE_STRING:
-    strval = (char *)(localdata->nodes[0]->exe)(localdata->nodes[0], theinput);
+    strval = (char *)(localdata->nodes[0]->exe)(ctx, localdata->nodes[0], theinput);
     for (i=1;i<localdata->count;i++) {
-      if (ircd_strcmp(strval, (char *)(localdata->nodes[i]->exe)(localdata->nodes[i], theinput)) >= 0)
+      if (ircd_strcmp(strval, (char *)(localdata->nodes[i]->exe)(ctx, localdata->nodes[i], theinput)) >= 0)
        return (void *)0;
     }
     return (void *)1;