diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-25 13:27:10 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-25 13:27:10 +0000 |
commit | 5ebc0db1a6d4c75ce9c26449ef2a2e3d7b340e10 (patch) | |
tree | d9f34f80e487d70da9c764f7c050086eceaff5bf /var.c | |
parent | a24cee11b718603fbc681e4a7a23f50c8d785ad7 (diff) | |
download | rsyslog-5ebc0db1a6d4c75ce9c26449ef2a2e3d7b340e10.tar.gz rsyslog-5ebc0db1a6d4c75ce9c26449ef2a2e3d7b340e10.tar.bz2 rsyslog-5ebc0db1a6d4c75ce9c26449ef2a2e3d7b340e10.zip |
- added PUSHMSGVAR operation
- included expression support in filter module (and it works ;))
Diffstat (limited to 'var.c')
-rw-r--r-- | var.c | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -89,6 +89,41 @@ CODESTARTobjDebugPrint(var) ENDobjDebugPrint(var) +/* duplicates a var instance + * rgerhards, 2008-02-25 + */ +static rsRetVal +Duplicate(var_t *pThis, var_t **ppNew) +{ + DEFiRet; + var_t *pNew = NULL; + cstr_t *pstr; + + ISOBJ_TYPE_assert(pThis, var); + assert(ppNew != NULL); + + CHKiRet(varConstruct(&pNew)); + CHKiRet(varConstructFinalize(pNew)); + + /* we have the object, now copy value */ + pNew->varType = pThis->varType; + if(pThis->varType == VARTYPE_NUMBER) { + pNew->val.num = pThis->val.num; + } else if(pThis->varType == VARTYPE_STR) { + CHKiRet(rsCStrConstructFromCStr(&pstr, pThis->val.pStr)); + pNew->val.pStr = pstr; + } + + *ppNew = pNew; + +finalize_it: + if(iRet != RS_RET_OK && pNew != NULL) + varDestruct(&pNew); + + RETiRet; +} + + /* free the current values (destructs objects if necessary) */ static rsRetVal @@ -340,6 +375,7 @@ CODESTARTobjQueryInterface(var) pIf->ConvToNumber = ConvToNumber; pIf->ConvToBool = ConvToBool; pIf->ConvToString = ConvToString; + pIf->Duplicate = Duplicate; finalize_it: ENDobjQueryInterface(var) |