summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-06-12 16:01:52 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-06-12 16:01:52 +0200
commitbf138adcad7367aef8afe8030a132608ba562ce3 (patch)
tree6cef907134afb1a6640bf911f78b0075139024d4 /grammar
parent84cc67bd44ac4b4d931e07febeb81ba683737f21 (diff)
parentdb350988f0ab0b57f6a4aed0da20b5f41499690f (diff)
downloadrsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.tar.gz
rsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.tar.xz
rsyslog-bf138adcad7367aef8afe8030a132608ba562ce3.zip
Merge branch 'master-regexp'
Diffstat (limited to 'grammar')
-rw-r--r--grammar/rainerscript.c17
-rw-r--r--grammar/rainerscript.h3
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 {