]> jfr.im git - irc/quakenet/newserv.git/blame - newsearch/ns-exists.c
SearchCtx should contain 'type' - this is to make life easier when defining new searc...
[irc/quakenet/newserv.git] / newsearch / ns-exists.c
CommitLineData
f519b0a2
IB
1/*
2 * exists functionality
3 */
4
5#include "newsearch.h"
6
7#include <stdio.h>
8#include <stdlib.h>
9
c8be5183
CP
10void *exists_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput);
11void exists_free(searchCtx *ctx, struct searchNode *thenode);
f519b0a2 12
f33f3f52 13struct searchNode *exists_parse(searchCtx *ctx, int argc, char **argv) {
f519b0a2
IB
14 struct searchNode *thenode;
15
f33f3f52 16 if (ctx->type != SEARCHTYPE_CHANNEL) {
f519b0a2
IB
17 parseError = "exists: this function is only valid for channel searches.";
18 return NULL;
19 }
20
21 if (!(thenode=(struct searchNode *)malloc(sizeof (struct searchNode)))) {
22 parseError = "malloc: could not allocate memory for this search.";
23 return NULL;
24 }
25
26 thenode->returntype = RETURNTYPE_BOOL;
27 thenode->localdata = NULL;
28 thenode->exe = exists_exe;
29 thenode->free = exists_free;
30
31 return thenode;
32}
33
c8be5183 34void *exists_exe(searchCtx *ctx, struct searchNode *thenode, void *theinput) {
f519b0a2
IB
35 chanindex *cip = (chanindex *)theinput;
36
37 if (cip->channel == NULL)
c7f7a584 38 return (void *)0;
39
40 return (void *)1;
f519b0a2
IB
41}
42
c8be5183 43void exists_free(searchCtx *ctx, struct searchNode *thenode) {
f519b0a2
IB
44 free(thenode);
45}
46