-
#include <stdio.h>
+#include <stdarg.h>
#include "newsearch.h"
#include "../irc/irc_config.h"
deletecommandfromtree(searchTree, term, (CommandHandler) parsefunc);
}
-int do_nicksearch(void *source, int cargc, char **cargv) {
+static void controlwallwrapper(int level, char *format, ...) {
+ char buf[1024];
+ va_list ap;
+
+ va_start(ap, format);
+ vsnprintf(buf, sizeof(buf), format, ap);
+ controlwall(NO_OPER, level, "%s", buf);
+ va_end(ap);
+}
+
+int do_nicksearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv) {
nick *sender = senderNSExtern = source;
struct searchNode *search;
int limit=500;
switch(*ch) {
case 'l':
if (cargc<arg) {
- controlreply(sender,"Error: -l switch requires an argument");
+ reply(sender,"Error: -l switch requires an argument");
return CMD_USAGE;
}
limit=strtoul(cargv[arg++],NULL,10);
case 'd':
if (cargc<arg) {
- controlreply(sender,"Error: -d switch requires an argument");
+ reply(sender,"Error: -d switch requires an argument");
return CMD_USAGE;
}
cmd=findcommandintree(nickOutputTree, cargv[arg], 1);
if (!cmd) {
- controlreply(sender,"Error: unknown output format %s",cargv[arg]);
+ reply(sender,"Error: unknown output format %s",cargv[arg]);
return CMD_USAGE;
}
display=(NickDisplayFunc)cmd->handler;
break;
default:
- controlreply(sender,"Unrecognised flag -%c.",*ch);
+ reply(sender,"Unrecognised flag -%c.",*ch);
}
}
}
if (arg>=cargc) {
- controlreply(sender,"No search terms - aborting.");
+ reply(sender,"No search terms - aborting.");
return CMD_ERROR;
}
}
ctx.parser = search_parse;
- ctx.reply = controlreply;
+ ctx.reply = reply;
+ ctx.wall = wall;
if (!(search = ctx.parser(&ctx, SEARCHTYPE_NICK, cargv[arg]))) {
- controlreply(sender,"Parse error: %s",parseError);
+ reply(sender,"Parse error: %s",parseError);
return CMD_ERROR;
}
return CMD_OK;
}
+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) {
int i, j;
int matches = 0;
matches, tchans, uchans, (float)tchans/uchans);
}
-int do_chansearch(void *source, int cargc, char **cargv) {
+int do_chansearch_real(replyFunc reply, wallFunc wall, void *source, int cargc, char **cargv) {
nick *sender = senderNSExtern = source;
struct searchNode *search;
int limit=500;
switch(*ch) {
case 'l':
if (cargc<arg) {
- controlreply(sender,"Error: -l switch requires an argument");
+ reply(sender,"Error: -l switch requires an argument");
return CMD_USAGE;
}
limit=strtoul(cargv[arg++],NULL,10);
case 'd':
if (cargc<arg) {
- controlreply(sender,"Error: -d switch requires an argument");
+ reply(sender,"Error: -d switch requires an argument");
return CMD_USAGE;
}
cmd=findcommandintree(chanOutputTree, cargv[arg], 1);
if (!cmd) {
- controlreply(sender,"Error: unknown output format %s",cargv[arg]);
+ reply(sender,"Error: unknown output format %s",cargv[arg]);
return CMD_USAGE;
}
display=(ChanDisplayFunc)cmd->handler;
break;
default:
- controlreply(sender,"Unrecognised flag -%c.",*ch);
+ reply(sender,"Unrecognised flag -%c.",*ch);
}
}
}
if (arg>=cargc) {
- controlreply(sender,"No search terms - aborting.");
+ reply(sender,"No search terms - aborting.");
return CMD_ERROR;
}
}
ctx.parser = search_parse;
- ctx.reply = controlreply;
+ ctx.reply = reply;
+ ctx.wall = wall;
if (!(search = ctx.parser(&ctx, SEARCHTYPE_CHANNEL, cargv[arg]))) {
- controlreply(sender,"Parse error: %s",parseError);
+ reply(sender,"Parse error: %s",parseError);
return CMD_ERROR;
}
return CMD_OK;
}
+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) {
int i;
chanindex *cip;
#include <stdlib.h>
#include <string.h>
-#include "../control/control.h" /* controlreply() */
+#include "../control/control.h"
#include "../irc/irc.h" /* irc_send() */
#include "../lib/irc_string.h" /* IPtostr(), longtoduration(), durationtolong() */
#include "../lib/strlfunc.h"
if (localdata->count > NSMAX_GLINE_LIMIT) {
/* need to warn the user that they have just tried to twat half the network ... */
- controlreply(senderNSExtern, "Warning: your pattern matches too many users (%d) - nothing done.", localdata->count);
+ ctx->reply(senderNSExtern, "Warning: your pattern matches too many users (%d) - nothing done.", localdata->count);
free(localdata);
free(thenode);
return;
}
}
if (safe)
- controlreply(senderNSExtern, "Warning: your pattern matched privileged users (%d in total) - these have not been touched.", safe);
+ ctx->reply(senderNSExtern, "Warning: your pattern matched privileged users (%d in total) - these have not been touched.", safe);
/* notify opers of the action */
- controlwall(NO_OPER, NL_GLINES, "%s/%s glined %d %s via %s for %s [%d untouched].", senderNSExtern->nick, senderNSExtern->authname, (localdata->count - safe),
+ ctx->wall(NL_GLINES, "%s/%s glined %d %s via %s for %s [%d untouched].", senderNSExtern->nick, senderNSExtern->authname, (localdata->count - safe),
(localdata->count - safe) != 1 ? "users" : "user", (localdata->type == SEARCHTYPE_CHANNEL) ? "chansearch" : "nicksearch", longtoduration(localdata->duration, 1), safe);
free(localdata);
free(thenode);
#include <stdio.h>
#include <stdlib.h>
-#include "../control/control.h" /* controlreply() */
+#include "../control/control.h"
#include "../localuser/localuser.h" /* killuser() */
#include "../lib/irc_string.h" /* IPtostr() */
#include "../lib/strlfunc.h"
if (localdata->count > NSMAX_KILL_LIMIT) {
/* need to warn the user that they have just tried to twat half the network ... */
- controlreply(senderNSExtern, "Warning: your pattern matches too many users (%d) - nothing done.", localdata->count);
+ ctx->reply(senderNSExtern, "Warning: your pattern matches too many users (%d) - nothing done.", localdata->count);
free(localdata);
free(thenode);
return;
}
if (safe)
- controlreply(senderNSExtern, "Warning: your pattern matched privileged users (%d in total) - these have not been touched.", safe);
+ ctx->reply(senderNSExtern, "Warning: your pattern matched privileged users (%d in total) - these have not been touched.", safe);
/* notify opers of the action */
- controlwall(NO_OPER, NL_KICKKILLS, "%s/%s killed %d %s via %s [%d untouched].", senderNSExtern->nick, senderNSExtern->authname, (localdata->count - safe),
+ ctx->wall(NL_KICKKILLS, "%s/%s killed %d %s via %s [%d untouched].", senderNSExtern->nick, senderNSExtern->authname, (localdata->count - safe),
(localdata->count - safe) != 1 ? "users" : "user", (localdata->type == SEARCHTYPE_CHANNEL) ? "chansearch" : "nicksearch", safe);
free(localdata);
free(thenode);