diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-06-12 16:01:52 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-06-12 16:01:52 +0200 |
commit | bf138adcad7367aef8afe8030a132608ba562ce3 (patch) | |
tree | 6cef907134afb1a6640bf911f78b0075139024d4 /grammar | |
parent | 84cc67bd44ac4b4d931e07febeb81ba683737f21 (diff) | |
parent | db350988f0ab0b57f6a4aed0da20b5f41499690f (diff) | |
download | rsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.tar.gz rsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.tar.xz rsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.zip |
Merge branch 'master-regexp'
Diffstat (limited to 'grammar')
-rw-r--r-- | grammar/rainerscript.c | 17 | ||||
-rw-r--r-- | grammar/rainerscript.h | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c index a5cc10c2..bcdbdf3b 100644 --- a/grammar/rainerscript.c +++ b/grammar/rainerscript.c @@ -838,6 +838,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); @@ -891,7 +896,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. @@ -1453,6 +1458,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 " @@ -1488,6 +1496,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; } diff --git a/grammar/rainerscript.h b/grammar/rainerscript.h index e11ae62f..07e6af0b 100644 --- a/grammar/rainerscript.h +++ b/grammar/rainerscript.h @@ -163,7 +163,8 @@ enum cnffuncid { CNFFUNC_GETENV, CNFFUNC_TOLOWER, CNFFUNC_CSTR, - CNFFUNC_CNUM + CNFFUNC_CNUM, + CNFFUNC_RE_MATCH }; struct cnffunc { |