flag_t clearmodes;
};
-struct searchNode *qchanflags_parse(searchCtx *ctx, int type, int argc, char **argv) {
+struct searchNode *qchanflags_parse(searchCtx *ctx, int argc, char **argv) {
struct searchNode *thenode;
struct qchanflags_localdata *localdata;
- if (type != SEARCHTYPE_CHANNEL) {
- parseError = "qchanflags: 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), QCFLAG_ALL, argv[0], rcflags, REJECT_NONE);
- setflags(&(localdata->clearmodes), QCFLAG_ALL, argv[0], rcflags, REJECT_NONE);
-
+
+ if (!(arg=argtoconststr("qchanflags", ctx, argv[0], &p))) {
+ free(thenode);
+ return NULL;
+ }
+
+ setflags(&(localdata->setmodes), QCFLAG_ALL, p, rcflags, REJECT_NONE);
+ setflags(&(localdata->clearmodes), QCFLAG_ALL, p, rcflags, REJECT_NONE);
+ arg->free(ctx, arg);
+
localdata->clearmodes = ~localdata->clearmodes;
}