summaryrefslogtreecommitdiffstats
path: root/runtime/msg.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2011-07-07 16:35:51 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2011-07-07 16:35:51 +0200
commit8a9e0cc68e3314b02065dcd3424201f25f176dfb (patch)
treee354a33f34575afc7eef45981902b8ae8c2fdbb8 /runtime/msg.c
parent5710b413963d2fde9d062127ed72672b8a58a07e (diff)
downloadrsyslog-8a9e0cc68e3314b02065dcd3424201f25f176dfb.tar.gz
rsyslog-8a9e0cc68e3314b02065dcd3424201f25f176dfb.tar.xz
rsyslog-8a9e0cc68e3314b02065dcd3424201f25f176dfb.zip
milestone/[PARTWORK]: obtaining msg vars integrated, "==" works for strings
Diffstat (limited to 'runtime/msg.c')
-rw-r--r--runtime/msg.c55
1 files changed, 48 insertions, 7 deletions
diff --git a/runtime/msg.c b/runtime/msg.c
index c5cbb5c8..96fe1b2c 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -37,6 +37,7 @@
#include <ctype.h>
#include <sys/socket.h>
#include <netdb.h>
+#include <libestr.h>
#include <libee/libee.h>
#if HAVE_MALLOC_H
# include <malloc.h>
@@ -480,16 +481,13 @@ getRcvFromIP(msg_t *pM)
}
-
-/* map a property name (string) to a property ID */
-rsRetVal propNameToID(cstr_t *pCSPropName, propid_t *pPropID)
+/* map a property name (C string) to a property ID */
+rsRetVal
+propNameStrToID(uchar *pName, propid_t *pPropID)
{
- uchar *pName;
DEFiRet;
- assert(pCSPropName != NULL);
- assert(pPropID != NULL);
- pName = rsCStrGetSzStrNoNULL(pCSPropName);
+ assert(pName != NULL);
/* sometimes there are aliases to the original MonitoWare
* property names. These come after || in the ifs below. */
@@ -577,6 +575,21 @@ rsRetVal propNameToID(cstr_t *pCSPropName, propid_t *pPropID)
}
+/* map a property name (string) to a property ID */
+rsRetVal
+propNameToID(cstr_t *pCSPropName, propid_t *pPropID)
+{
+ uchar *pName;
+ DEFiRet;
+
+ assert(pCSPropName != NULL);
+ assert(pPropID != NULL);
+ pName = rsCStrGetSzStrNoNULL(pCSPropName);
+ iRet = propNameStrToID(pName, pPropID);
+ RETiRet;
+}
+
+
/* map a property ID to a name string (useful for displaying) */
uchar *propIDToName(propid_t propID)
{
@@ -3190,6 +3203,34 @@ finalize_it:
}
+
+/* Return an es_str_t for given message property.
+ */
+es_str_t*
+msgGetMsgVarNew(msg_t *pThis, uchar *name)
+{
+ size_t propLen;
+ uchar *pszProp = NULL;
+ propid_t propid;
+ unsigned short bMustBeFreed = 0;
+ es_str_t *estr;
+
+ ISOBJ_TYPE_assert(pThis, msg);
+
+ /* always call MsgGetProp() without a template specifier */
+ /* TODO: optimize propNameToID() call -- rgerhards, 2009-06-26 */
+ propNameStrToID(name, &propid);
+ pszProp = (uchar*) MsgGetProp(pThis, NULL, propid, NULL, &propLen, &bMustBeFreed);
+
+dbgprintf("ZZZZ: var %s returns '%s'\n", name, pszProp);
+ estr = es_newStrFromCStr((char*)pszProp, propLen);
+ if(bMustBeFreed)
+ free(pszProp);
+
+ return estr;
+}
+
+
/* This function can be used as a generic way to set properties.
* We have to handle a lot of legacy, so our return value is not always
* 100% correct (called functions do not always provide one, should