diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-05-29 10:45:44 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-05-29 10:45:44 +0200 |
commit | db350988f0ab0b57f6a4aed0da20b5f41499690f (patch) | |
tree | 389fcc1e787fc38ac864c08019a702681c2e90ea /grammar/rainerscript.c | |
parent | 5fa3c34a1fe0144a2d8cb74cb82a73d8c61d435d (diff) | |
download | rsyslog-db350988f0ab0b57f6a4aed0da20b5f41499690f.tar.gz rsyslog-db350988f0ab0b57f6a4aed0da20b5f41499690f.tar.bz2 rsyslog-db350988f0ab0b57f6a4aed0da20b5f41499690f.zip |
first experiments with regexp'es in RainerScript
Diffstat (limited to 'grammar/rainerscript.c')
-rw-r--r-- | grammar/rainerscript.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index 320e66d0..ce0298fb 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -839,6 +839,11 @@ doFuncCall(struct cnffunc *func, struct var *ret, void* usrptr) } ret->datatype = 'N'; break; + case CNFFUNC_RE_MATCH: + dbgprintf("TODO: implement re_match()\n"); + ret->d.n = 1; + ret->datatype = 'N'; + break; default: if(Debug) { fname = es_str2cstr(func->fname, NULL); @@ -892,7 +897,7 @@ cnfexprEval(struct cnfexpr *expr, struct var *ret, void* usrptr) int bMustFree, bMustFree2; long long n_r, n_l; - //dbgprintf("eval expr %p, type '%c'(%u)\n", expr, expr->nodetype, expr->nodetype); + dbgprintf("eval expr %p, type '%c'(%u)\n", expr, expr->nodetype, expr->nodetype); switch(expr->nodetype) { /* note: comparison operations are extremely similar. The code can be copyied, only * places flagged with "CMP" need to be changed. @@ -1450,6 +1455,9 @@ cnffparamlstNew(struct cnfexpr *expr, struct cnffparamlst *next) static inline enum cnffuncid funcName2ID(es_str_t *fname, unsigned short nParams) { +{ char *s;s=es_str2cstr(fname, NULL); +dbgprintf("ZZZZ: func: '%s', nParams: %d\n", s, nParams); +free(s);} if(!es_strbufcmp(fname, (unsigned char*)"strlen", sizeof("strlen") - 1)) { if(nParams != 1) { parser_errmsg("number of parameters for strlen() must be one " @@ -1485,6 +1493,13 @@ funcName2ID(es_str_t *fname, unsigned short nParams) return CNFFUNC_INVALID; } return CNFFUNC_CNUM; + } else if(!es_strbufcmp(fname, (unsigned char*)"re_match", sizeof("re_match") - 1)) { + if(nParams != 2) { + parser_errmsg("number of parameters for re_match() must be two " + "but is %d.", nParams); + return CNFFUNC_INVALID; + } + return CNFFUNC_RE_MATCH; } else { return CNFFUNC_INVALID; } |