]> jfr.im git - irc/quakenet/newserv.git/blobdiff - newsearch/newsearch_ast.c
Merge.
[irc/quakenet/newserv.git] / newsearch / newsearch_ast.c
index ac6e4da4e8a7fbad3f5cb450e5f8af606930c27d..63c40f1de5cd51860e217d3b68d713c694605b80 100644 (file)
@@ -11,12 +11,6 @@ typedef union exprunion {
   char *literal;
 } exprunion;
 
-typedef struct searchASTCache {
-  searchASTExpr *tree;
-  searchASTExpr *cache[AST_RECENT];
-  int nextpos;
-} searchASTCache;
-
 /* comares either a string and a string or an expression and an expression */
 static searchASTExpr *compareloc(searchASTExpr *expr, exprunion *loc) {
   if(expr->type == AST_NODE_LITERAL) {
@@ -142,7 +136,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 +149,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 +162,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 +178,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 +194,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 +207,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);
 
@@ -242,32 +236,17 @@ static char *ast_printtree_real(StringBuf *buf, searchASTExpr *expr, searchCmd *
     sbaddchar(buf, ')');
 
   } else if(expr->type == AST_NODE_LITERAL) {
-    int quotesrequired, escrequired;
     char *p;
-    for(quotesrequired=escrequired=0,p=expr->u.literal;*p;p++) {
-      if(*p == '(' || *p == ')' || *p == ' ')
-        quotesrequired = 1;
-      if(*p == '\\' || *p == '"') {
-        escrequired = 1;
-        if(quotesrequired)
-          break;
-      }
-    }
-    if(quotesrequired)
-      sbaddchar(buf, '"');
-    
-    if(escrequired) {
-      for(p=expr->u.literal;*p;p++) {
-        if(*p == '\\' || *p == '"')
-          sbaddchar(buf, '\\');
-        sbaddchar(buf, *p);
-      }
-    } else {
-      sbaddstr(buf, expr->u.literal);
+
+    sbaddchar(buf, '"');
+
+    for(p=expr->u.literal;*p;p++) {
+      if(*p == '\\' || *p == '"')
+        sbaddchar(buf, '\\');
+      sbaddchar(buf, *p);
     }
 
-    if(quotesrequired)
-      sbaddchar(buf, '"');
+    sbaddchar(buf, '"');
   } else {
     sbaddstr(buf, "???");
   }