diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-04-07 15:28:06 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-04-07 15:28:06 +0200 |
commit | f7f0902f65b7693b8b3ebc3064b5ea188e614bf9 (patch) | |
tree | 39e9d3d6d3533afff62c72044dea723e6c70a2c3 /runtime/vmprg.c | |
parent | 1a08fa5ded3087a3b60d87a20d25a4ec589eba21 (diff) | |
parent | a6c743e5ec5d213d3aa6404553fe65d59f065799 (diff) | |
download | rsyslog-f7f0902f65b7693b8b3ebc3064b5ea188e614bf9.tar.gz rsyslog-f7f0902f65b7693b8b3ebc3064b5ea188e614bf9.tar.bz2 rsyslog-f7f0902f65b7693b8b3ebc3064b5ea188e614bf9.zip |
Merge branch 'nextmaster' into oracle
Diffstat (limited to 'runtime/vmprg.c')
-rw-r--r-- | runtime/vmprg.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/runtime/vmprg.c b/runtime/vmprg.c index 75915025..07757b98 100644 --- a/runtime/vmprg.c +++ b/runtime/vmprg.c @@ -155,7 +155,6 @@ vmprgAddVarOperation(vmprg_t *pThis, opcode_t opcode, var_t *pVar) /* construct and fill vmop */ CHKiRet(vmop.Construct(&pOp)); CHKiRet(vmop.ConstructFinalize(pOp)); - CHKiRet(vmop.ConstructFinalize(pOp)); CHKiRet(vmop.SetOpcode(pOp, opcode)); if(pVar != NULL) CHKiRet(vmop.SetVar(pOp, pVar)); @@ -168,6 +167,32 @@ finalize_it: } +/* this is another shortcut for high-level callers. It is similar to vmprgAddVarOperation + * but adds a call operation. Among others, this include a check if the function + * is known. + */ +static rsRetVal +vmprgAddCallOperation(vmprg_t *pThis, cstr_t *pcsName) +{ + DEFiRet; + vmop_t *pOp; + + ISOBJ_TYPE_assert(pThis, vmprg); + + /* construct and fill vmop */ + CHKiRet(vmop.Construct(&pOp)); + CHKiRet(vmop.ConstructFinalize(pOp)); + CHKiRet(vmop.SetFunc(pOp, pcsName)); + CHKiRet(vmop.SetOpcode(pOp, opcode_FUNC_CALL)); + + /* and add it to the program */ + CHKiRet(vmprgAddOperation(pThis, pOp)); + +finalize_it: + RETiRet; +} + + /* queryInterface function * rgerhards, 2008-02-21 */ @@ -189,6 +214,7 @@ CODESTARTobjQueryInterface(vmprg) pIf->Obj2Str = Obj2Str; pIf->AddOperation = vmprgAddOperation; pIf->AddVarOperation = vmprgAddVarOperation; + pIf->AddCallOperation = vmprgAddCallOperation; finalize_it: ENDobjQueryInterface(vmprg) |