]> jfr.im git - irc/quakenet/newserv.git/commitdiff
newsearch: move display and limit inside the context object.
authorChris Porter <redacted>
Sat, 20 Sep 2008 15:24:24 +0000 (16:24 +0100)
committerChris Porter <redacted>
Sat, 20 Sep 2008 15:24:24 +0000 (16:24 +0100)
newsearch/newsearch.c
newsearch/newsearch.h
newsearch/newsearch_ast.c
patriciasearch/patriciasearch.c
patriciasearch/patriciasearch.h

index 89ba32128d4a325603dc759c8ba390483eaa0b80..0a7448ee8f260ca7096a93761045a53693ed44bc 100644 (file)
@@ -414,7 +414,7 @@ int parseopts(int cargc, char **cargv, int *arg, int *limit, void **subset, void
   return CMD_OK;
 }
 
-void newsearch_ctxinit(searchCtx *ctx, searchParseFunc searchfn, replyFunc replyfn, wallFunc wallfn, void *arg, searchCmd *cmd, nick *np) {
+void newsearch_ctxinit(searchCtx *ctx, searchParseFunc searchfn, replyFunc replyfn, wallFunc wallfn, void *arg, searchCmd *cmd, nick *np, void *displayfn, int limit) {
   memset(ctx, 0, sizeof(searchCtx));
   
   ctx->reply = replyfn;
@@ -423,6 +423,8 @@ void newsearch_ctxinit(searchCtx *ctx, searchParseFunc searchfn, replyFunc reply
   ctx->arg = arg;
   ctx->searchcmd = cmd;
   ctx->sender = np;
+  ctx->limit = limit;
+  ctx->displayfn = displayfn;
 }
 
 int do_nicksearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv) {
@@ -453,14 +455,14 @@ int do_nicksearch_real(replyFunc reply, wallFunc wall, void *source, int cargc,
     rejoinline(cargv[arg],cargc-arg);
   }
 
-  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_nicksearch, sender);
+  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_nicksearch, sender, display, limit);
 
   if (!(search = ctx.parser(&ctx, cargv[arg]))) {
     reply(sender,"Parse error: %s",parseError);
     return CMD_ERROR;
   }
 
-  nicksearch_exe(search, &ctx, sender, display, limit);
+  nicksearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
@@ -471,15 +473,17 @@ int do_nicksearch(void *source, int cargc, char **cargv) {
   return do_nicksearch_real(controlreply, controlwallwrapper, source, cargc, cargv);
 }
 
-void nicksearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, NickDisplayFunc display, int limit) {
+void nicksearch_exe(struct searchNode *search, searchCtx *ctx) {
   int i, j;
   int matches = 0;
   unsigned int cmarker;
   unsigned int tchans=0,uchans=0;
   struct channel **cs;
-  nick *np;
+  nick *np, *sender = ctx->sender;
   senderNSExtern = sender;
-  
+  NickDisplayFunc display = ctx->displayfn;
+  int limit = ctx->limit;
+
   /* Get a marker value to mark "seen" channels for unique count */
   cmarker=nextchanmarker();
   
@@ -543,13 +547,13 @@ int do_chansearch_real(replyFunc reply, wallFunc wall, void *source, int cargc,
     rejoinline(cargv[arg],cargc-arg);
   }
 
-  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_chansearch, sender);
+  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_chansearch, sender, display, limit);
   if (!(search = ctx.parser(&ctx, cargv[arg]))) {
     reply(sender,"Parse error: %s",parseError);
     return CMD_ERROR;
   }
 
-  chansearch_exe(search, &ctx, sender, display, limit);
+  chansearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
@@ -560,11 +564,14 @@ int do_chansearch(void *source, int cargc, char **cargv) {
   return do_chansearch_real(controlreply, controlwallwrapper, source, cargc, cargv);
 }
 
-void chansearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, ChanDisplayFunc display, int limit) {  
+void chansearch_exe(struct searchNode *search, searchCtx *ctx) {  
   int i;
   chanindex *cip;
   int matches = 0;
+  nick *sender = ctx->sender;
   senderNSExtern = sender;
+  ChanDisplayFunc display = ctx->displayfn;
+  int limit = ctx->limit;
   
   search=coerceNode(ctx, search, RETURNTYPE_BOOL);
   
@@ -611,14 +618,14 @@ int do_usersearch_real(replyFunc reply, wallFunc wall, void *source, int cargc,
     rejoinline(cargv[arg],cargc-arg);
   }
 
-  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_usersearch, sender);
+  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_usersearch, sender, display, limit);
 
   if (!(search = ctx.parser(&ctx, cargv[arg]))) {
     reply(sender,"Parse error: %s",parseError);
     return CMD_ERROR;
   }
 
-  usersearch_exe(search, &ctx, sender, display, limit);
+  usersearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
@@ -629,12 +636,15 @@ int do_usersearch(void *source, int cargc, char **cargv) {
   return do_usersearch_real(controlreply, controlwallwrapper, source, cargc, cargv);
 }
 
-void usersearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, UserDisplayFunc display, int limit) {  
+void usersearch_exe(struct searchNode *search, searchCtx *ctx) {  
   int i;
   authname *aup;
   int matches = 0;
+  nick *sender = ctx->sender;
+  int limit = ctx->limit;
+  UserDisplayFunc display = ctx->displayfn;
   senderNSExtern = sender;
-  
+
   search=coerceNode(ctx, search, RETURNTYPE_BOOL);
   
   for (i=0;i<AUTHNAMEHASHSIZE;i++) {
index 8c7f928f4fac5f515fc8e8d93779583211905f5e..49679ca73ed0cde200d0b1b74e5f868834fbba86 100644 (file)
@@ -90,6 +90,8 @@ typedef struct searchCtx {
   int lastvar;
   struct searchCmd *searchcmd;
   nick *sender;
+  int limit;
+  void *displayfn;
 } searchCtx;
 
 /* Core functions */
@@ -187,9 +189,9 @@ void printnick(searchCtx *, nick *, nick *);
 void printuser(searchCtx *, nick *, authname *);
 void printchannel(searchCtx *, nick *, chanindex *);
 
-void nicksearch_exe(struct searchNode *search, searchCtx *sctx, nick *sender, NickDisplayFunc display, int limit);
-void chansearch_exe(struct searchNode *search, searchCtx *sctx, nick *sender, ChanDisplayFunc display, int limit);
-void usersearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, UserDisplayFunc display, int limit);
+void nicksearch_exe(struct searchNode *search, searchCtx *sctx);
+void chansearch_exe(struct searchNode *search, searchCtx *sctx);
+void usersearch_exe(struct searchNode *search, searchCtx *ctx);
 
 int do_nicksearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv);
 int do_chansearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv);
@@ -202,7 +204,7 @@ struct searchVariable *var_register(searchCtx *ctx, char *arg, int type);
 searchNode *var_get(searchCtx *ctx, char *arg);
 void var_setstr(struct searchVariable *v, char *data);
 
-void newsearch_ctxinit(searchCtx *ctx, searchParseFunc searchfn, replyFunc replyfn, wallFunc wallfn, void *arg, searchCmd *cmd, nick *sender);
+void newsearch_ctxinit(searchCtx *ctx, searchParseFunc searchfn, replyFunc replyfn, wallFunc wallfn, void *arg, searchCmd *cmd, nick *sender, void *displayfn, int limit);
 
 /* AST functions */
 
index ac6e4da4e8a7fbad3f5cb450e5f8af606930c27d..fd8e1038ff4afb47a2afd39dd0c518694b6659b2 100644 (file)
@@ -142,7 +142,7 @@ int ast_nicksearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   memset(&cache, 0, sizeof(cache));
   cache.tree = tree;
 
-  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_nicksearch, sender);
+  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_nicksearch, sender, display, limit);
 
   buf[0] = '\0';
   reply(sender, "Parsing: %s", ast_printtree(buf, sizeof(buf), tree, reg_nicksearch));
@@ -155,7 +155,7 @@ int ast_nicksearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   reply(sender, "Executing...");
   if(header)  
     header(sender, headerarg);
-  nicksearch_exe(search, &ctx, sender, display, limit);
+  nicksearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
@@ -168,7 +168,7 @@ int ast_chansearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   searchNode *search;
   char buf[1024];
 
-  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_chansearch, sender);
+  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_chansearch, sender, display, limit);
 
   memset(&cache, 0, sizeof(cache));
   cache.tree = tree;
@@ -184,7 +184,7 @@ int ast_chansearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   reply(sender, "Executing...");
   if(header)  
     header(sender, headerarg);
-  chansearch_exe(search, &ctx, sender, display, limit);
+  chansearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
@@ -200,7 +200,7 @@ int ast_usersearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   memset(&cache, 0, sizeof(cache));
   cache.tree = tree;
 
-  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_usersearch, sender);
+  newsearch_ctxinit(&ctx, search_astparse, reply, wall, &cache, reg_usersearch, sender, display, limit);
 
   buf[0] = '\0';
   reply(sender, "Parsing: %s", ast_printtree(buf, sizeof(buf), tree, reg_usersearch));
@@ -213,7 +213,7 @@ int ast_usersearch(searchASTExpr *tree, replyFunc reply, void *sender, wallFunc
   reply(sender, "Executing...");
   if(header)  
     header(sender, headerarg);
-  usersearch_exe(search, &ctx, sender, display, limit);
+  usersearch_exe(search, &ctx);
 
   (search->free)(&ctx, search);
 
index c64b01da4338acd647fb65bea22dd230b1eecdfd..d1b2e64c0deb17bab6ed6d550ba9e75b15c52f27 100644 (file)
@@ -65,14 +65,14 @@ int do_pnodesearch_real(replyFunc reply, wallFunc wall, void *source, int cargc,
     rejoinline(cargv[arg],cargc-arg);
   }
 
-  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_nodesearch, sender);
+  newsearch_ctxinit(&ctx, search_parse, reply, wall, NULL, reg_nodesearch, sender, display, limit);
 
   if (!(search = ctx.parser(&ctx, cargv[arg]))) {
     reply(sender,"Parse error: %s",parseError);
     return CMD_ERROR;
   }
 
-  pnodesearch_exe(search, &ctx, sender, display, limit, subset);
+  pnodesearch_exe(search, &ctx, subset);
 
   (search->free)(&ctx, search);
 
@@ -83,9 +83,12 @@ int do_pnodesearch(void *source, int cargc, char **cargv) {
   return do_pnodesearch_real(controlreply, controlwallwrapper, source, cargc, cargv);
 }
 
-void pnodesearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, NodeDisplayFunc display, int limit, patricia_node_t *subset) {
+void pnodesearch_exe(struct searchNode *search, searchCtx *ctx, patricia_node_t *subset) {
   int matches = 0;
   patricia_node_t *node;
+  nick *sender = ctx->sender;
+  int limit = ctx->limit;
+  NodeDisplayFunc display = ctx->displayfn;
 
   /* Get a marker value to mark "seen" channels for unique count */
   //nmarker=nextnodemarker();
index 638f42577a2460b3914f74838c7e29c7ced0814e..ae8ab89405873f6931969ee1dd709626eaebe8b4 100644 (file)
@@ -6,7 +6,7 @@ typedef void (*NodeDisplayFunc)(struct searchCtx *, nick *, patricia_node_t *);
 
 void printnode(searchCtx *, nick *, patricia_node_t *);
 
-void pnodesearch_exe(struct searchNode *search, searchCtx *ctx, nick *sender, NodeDisplayFunc display, int limit, patricia_node_t *subset);
+void pnodesearch_exe(struct searchNode *search, searchCtx *ctx, patricia_node_t *subset);
 
 int do_pnodesearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv);