flag_t clearmodes;
};
-struct searchNode *qusers_parse(searchCtx *ctx, int type, int argc, char **argv) {
+struct searchNode *qusers_parse(searchCtx *ctx, int argc, char **argv) {
struct searchNode *thenode;
struct qusers_localdata *localdata;
- if (type != SEARCHTYPE_CHANNEL) {
- parseError = "qusers: this function is only valid for channel searches.";
- return NULL;
- }
-
if (!(thenode=(struct searchNode *)malloc(sizeof (struct searchNode)))) {
parseError = "malloc: could not allocate memory for this search.";
return NULL;
localdata->setmodes=0;
localdata->clearmodes=0;
} else {
+ struct searchNode *arg;
+ char *p;
+
localdata->setmodes=0;
localdata->clearmodes=~0;
-
- setflags(&(localdata->setmodes), QCUFLAG_ALL, argv[0], rcuflags, REJECT_NONE);
- setflags(&(localdata->clearmodes), QCUFLAG_ALL, argv[0], rcuflags, REJECT_NONE);
-
+
+ if (!(arg=argtoconststr("qusers", ctx, argv[0], &p))) {
+ free(thenode);
+ return NULL;
+ }
+
+ setflags(&(localdata->setmodes), QCUFLAG_ALL, p, rcuflags, REJECT_NONE);
+ setflags(&(localdata->clearmodes), QCUFLAG_ALL, p, rcuflags, REJECT_NONE);
+ arg->free(ctx, arg);
+
localdata->clearmodes = ~localdata->clearmodes;
}