summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--runtime/msg.c44
-rw-r--r--runtime/rule.c3
-rw-r--r--runtime/var.c326
-rw-r--r--runtime/var.h11
5 files changed, 4 insertions, 382 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fbf1d53..7ae5dffc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,6 @@
---------------------------------------------------------------------------
+Version 6.3.4 [DEVEL] (rgerhards), 2011-07-??
+---------------------------------------------------------------------------
Version 6.3.3 [DEVEL] (rgerhards), 2011-07-13
- rsyslog.conf format: now parsed by RainerScript parser
this provides the necessary base for future enhancements as well as some
diff --git a/runtime/msg.c b/runtime/msg.c
index b440d6ca..0a79bec2 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -58,7 +58,6 @@
/* static data */
DEFobjStaticHelpers
-DEFobjCurrIf(var)
DEFobjCurrIf(datetime)
DEFobjCurrIf(glbl)
DEFobjCurrIf(regexp)
@@ -501,11 +500,6 @@ propNameStrToID(uchar *pName, propid_t *pPropID)
*pPropID = PROP_SYSLOGTAG;
} else if(!strcmp((char*) pName, "rawmsg")) {
*pPropID = PROP_RAWMSG;
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- } else if(!strcmp((char*) pName, "uxtradmsg")) {
- pRes = getUxTradMsg(pMsg);
- */
} else if(!strcmp((char*) pName, "inputname")) {
*pPropID = PROP_INPUTNAME;
} else if(!strcmp((char*) pName, "fromhost")) {
@@ -603,12 +597,6 @@ uchar *propIDToName(propid_t propID)
return UCHAR_CONSTANT("syslogtag");
case PROP_RAWMSG:
return UCHAR_CONSTANT("rawmsg");
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- case PROP_UXTRADMSG:
- pRes = getUxTradMsg(pMsg);
- break;
- */
case PROP_INPUTNAME:
return UCHAR_CONSTANT("inputname");
case PROP_FROMHOST:
@@ -985,10 +973,6 @@ msg_t* MsgDup(msg_t* pOld)
pNew->pInputName = pOld->pInputName;
prop.AddRef(pNew->pInputName);
}
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- pNew->offAfterPRI = pOld->offAfterPRI;
- */
if(pOld->iLenTAG > 0) {
if(pOld->iLenTAG < CONF_TAG_BUFSIZE) {
memcpy(pNew->TAG.szBuf, pOld->TAG.szBuf, pOld->iLenTAG);
@@ -1060,10 +1044,6 @@ static rsRetVal MsgSerialize(msg_t *pThis, strm_t *pStrm)
objSerializeSCALAR(pStrm, ttGenTime, INT);
objSerializeSCALAR(pStrm, tRcvdAt, SYSLOGTIME);
objSerializeSCALAR(pStrm, tTIMESTAMP, SYSLOGTIME);
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- objSerializeSCALAR(pStrm, offsAfterPRI, SHORT);
- */
CHKiRet(obj.SerializeProp(pStrm, UCHAR_CONSTANT("pszTAG"), PROPTYPE_PSZ, (void*)
((pThis->iLenTAG < CONF_TAG_BUFSIZE) ? pThis->TAG.szBuf : pThis->TAG.pszTAG)));
@@ -1257,18 +1237,6 @@ getRawMsg(msg_t *pM, uchar **pBuf, int *piLen)
}
-/* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
-char *getUxTradMsg(msg_t *pM)
-{
- if(pM == NULL)
- return "";
- else
- return (char*)pM->pszRawMsg + pM->offAfterPRI;
-}
-*/
-
-
int getMSGLen(msg_t *pM)
{
return((pM == NULL) ? 0 : pM->iLenMSG);
@@ -2378,12 +2346,6 @@ uchar *MsgGetProp(msg_t *pMsg, struct templateEntry *pTpe,
case PROP_RAWMSG:
getRawMsg(pMsg, &pRes, &bufLen);
break;
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- case PROP_UXTRADMSG:
- pRes = getUxTradMsg(pMsg);
- break;
- */
case PROP_INPUTNAME:
getInputName(pMsg, &pRes, &bufLen);
break;
@@ -3201,11 +3163,6 @@ rsRetVal MsgSetProperty(msg_t *pThis, var_t *pProp)
MsgSetMSGoffs(pThis, pProp->val.num);
} else if(isProp("pszRawMsg")) {
MsgSetRawMsg(pThis, (char*) rsCStrGetSzStrNoNULL(pProp->val.pStr), cstrLen(pProp->val.pStr));
- /* enable this, if someone actually uses UxTradMsg, delete after some time has
- * passed and nobody complained -- rgerhards, 2009-06-16
- } else if(isProp("offAfterPRI")) {
- pThis->offAfterPRI = pProp->val.num;
- */
} else if(isProp("pszUxTradMsg")) {
/*IGNORE*/; /* this *was* a property, but does no longer exist */
} else if(isProp("pszTAG")) {
@@ -3284,7 +3241,6 @@ rsRetVal msgQueryInterface(void) { return RS_RET_NOT_IMPLEMENTED; }
*/
BEGINObjClassInit(msg, 1, OBJ_IS_CORE_MODULE)
/* request objects we use */
- CHKiRet(objUse(var, CORE_COMPONENT));
CHKiRet(objUse(datetime, CORE_COMPONENT));
CHKiRet(objUse(glbl, CORE_COMPONENT));
CHKiRet(objUse(prop, CORE_COMPONENT));
diff --git a/runtime/rule.c b/runtime/rule.c
index cbd2660d..1d707634 100644
--- a/runtime/rule.c
+++ b/runtime/rule.c
@@ -44,7 +44,6 @@
/* static data */
DEFobjStaticHelpers
DEFobjCurrIf(errmsg)
-DEFobjCurrIf(var)
/* support for simple textual representation of FIOP names
@@ -455,7 +454,6 @@ ENDobjQueryInterface(rule)
*/
BEGINObjClassExit(rule, OBJ_IS_CORE_MODULE) /* class, version */
objRelease(errmsg, CORE_COMPONENT);
- objRelease(var, CORE_COMPONENT);
ENDObjClassExit(rule)
@@ -466,7 +464,6 @@ ENDObjClassExit(rule)
BEGINObjClassInit(rule, 1, OBJ_IS_CORE_MODULE) /* class, version */
/* request objects we use */
CHKiRet(objUse(errmsg, CORE_COMPONENT));
- CHKiRet(objUse(var, CORE_COMPONENT));
/* set our own handlers */
OBJSetMethodHandler(objMethod_DEBUGPRINT, ruleDebugPrint);
diff --git a/runtime/var.c b/runtime/var.c
index ef7cc8e6..eecc5d6a 100644
--- a/runtime/var.c
+++ b/runtime/var.c
@@ -90,324 +90,6 @@ CODESTARTobjDebugPrint(var)
ENDobjDebugPrint(var)
-/* This function is similar to DebugPrint, but does not send its output to
- * the debug log but instead to a caller-provided string. The idea here is that
- * we can use this string to get a textual representation of a variable.
- * Among others, this is useful for creating testbenches, our first use case for
- * it. Here, it enables simple comparison of the resulting program to a
- * reference program by simple string compare.
- * Note that the caller must initialize the string object. We always add
- * data to it. So, it can be easily combined into a chain of methods
- * to generate the final string.
- * rgerhards, 2008-07-07
- */
-static rsRetVal
-Obj2Str(var_t *pThis, cstr_t *pstrPrg)
-{
- DEFiRet;
- size_t lenBuf;
- uchar szBuf[2048];
-
- ISOBJ_TYPE_assert(pThis, var);
- assert(pstrPrg != NULL);
- switch(pThis->varType) {
- case VARTYPE_STR:
- lenBuf = snprintf((char*) szBuf, sizeof(szBuf), "%s[cstr]", rsCStrGetSzStr(pThis->val.pStr));
- break;
- case VARTYPE_NUMBER:
- lenBuf = snprintf((char*) szBuf, sizeof(szBuf), "%lld[nbr]", pThis->val.num);
- break;
- default:
- lenBuf = snprintf((char*) szBuf, sizeof(szBuf), "**UNKNOWN**[%d]", pThis->varType);
- break;
- }
- CHKiRet(rsCStrAppendStrWithLen(pstrPrg, szBuf, lenBuf));
-
-finalize_it:
- RETiRet;
-}
-
-
-/* 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
-varUnsetValues(var_t *pThis)
-{
- DEFiRet;
-
- ISOBJ_TYPE_assert(pThis, var);
- if(pThis->varType == VARTYPE_STR)
- rsCStrDestruct(&pThis->val.pStr);
-
- pThis->varType = VARTYPE_NONE;
-
- RETiRet;
-}
-
-
-/* set a string value
- * The caller hands over the string and must n longer use it after this method
- * has been called.
- */
-static rsRetVal
-varSetString(var_t *pThis, cstr_t *pStr)
-{
- DEFiRet;
-
- ISOBJ_TYPE_assert(pThis, var);
-
- CHKiRet(varUnsetValues(pThis));
- pThis->varType = VARTYPE_STR;
- pThis->val.pStr = pStr;
-
-finalize_it:
- RETiRet;
-}
-
-
-/* set an int64 value */
-static rsRetVal
-varSetNumber(var_t *pThis, number_t iVal)
-{
- DEFiRet;
-
- ISOBJ_TYPE_assert(pThis, var);
-
- CHKiRet(varUnsetValues(pThis));
- pThis->varType = VARTYPE_NUMBER;
- pThis->val.num = iVal;
-
-finalize_it:
- RETiRet;
-}
-
-
-/* Change the provided object to be of type number.
- * rgerhards, 2008-02-22
- */
-rsRetVal
-ConvToNumber(var_t *pThis)
-{
- DEFiRet;
- number_t n;
-
- if(pThis->varType == VARTYPE_NUMBER) {
- FINALIZE;
- } else if(pThis->varType == VARTYPE_STR) {
- iRet = rsCStrConvertToNumber(pThis->val.pStr, &n);
- if(iRet == RS_RET_NOT_A_NUMBER) {
- n = 0;
- iRet = RS_RET_OK; /* we accept this as part of the language definition */
- } else if (iRet != RS_RET_OK) {
- FINALIZE;
- }
-
- /* we need to destruct the string first, because string and number are
- * inside a union and share the memory area! -- rgerhards, 2008-04-03
- */
- rsCStrDestruct(&pThis->val.pStr);
-
- pThis->val.num = n;
- pThis->varType = VARTYPE_NUMBER;
- }
-
-finalize_it:
- RETiRet;
-}
-
-
-/* convert the provided var to type string. This is always possible
- * (except, of course, for things like out of memory...)
- * TODO: finish implementation!!!!!!!!!
- * rgerhards, 2008-02-24
- */
-rsRetVal
-ConvToString(var_t *pThis)
-{
- DEFiRet;
- uchar szNumBuf[64];
-
- if(pThis->varType == VARTYPE_STR) {
- FINALIZE;
- } else if(pThis->varType == VARTYPE_NUMBER) {
- CHKiRet(srUtilItoA((char*)szNumBuf, sizeof(szNumBuf)/sizeof(uchar), pThis->val.num));
- CHKiRet(rsCStrConstructFromszStr(&pThis->val.pStr, szNumBuf));
- pThis->varType = VARTYPE_STR;
- }
-
-finalize_it:
- RETiRet;
-}
-
-
-/* convert (if necessary) the value to a boolean. In essence, this means the
- * value must be a number, but in case of a string special logic is used as
- * some string-values may represent a boolean (e.g. "true").
- * rgerhards, 2008-02-25
- */
-rsRetVal
-ConvToBool(var_t *pThis)
-{
- DEFiRet;
- number_t n;
-
- if(pThis->varType == VARTYPE_NUMBER) {
- FINALIZE;
- } else if(pThis->varType == VARTYPE_STR) {
- iRet = rsCStrConvertToBool(pThis->val.pStr, &n);
- if(iRet == RS_RET_NOT_A_NUMBER) {
- n = 0;
- iRet = RS_RET_OK; /* we accept this as part of the language definition */
- } else if (iRet != RS_RET_OK) {
- FINALIZE;
- }
-
- /* we need to destruct the string first, because string and number are
- * inside a union and share the memory area! -- rgerhards, 2008-04-03
- */
- rsCStrDestruct(&pThis->val.pStr);
- pThis->val.num = n;
- pThis->varType = VARTYPE_NUMBER;
- }
-
-finalize_it:
- RETiRet;
-}
-
-
-/* This function is used to prepare two var_t objects for a common operation,
- * e.g before they are added, compared. The function looks at
- * the data types of both operands and finds the best data type suitable for
- * the operation (in respect to current types). Then, it converts those
- * operands that need conversion. Please note that the passed-in var objects
- * *are* modified and returned as new type. So do call this function only if
- * you actually need the conversion.
- *
- * This is how the common data type is selected. Note that op1 and op2 are
- * just the two operands, their order is irrelevant (this would just take up
- * more table space - so string/number is the same thing as number/string).
- *
- * Common Types:
- * op1 op2 operation data type
- * string string string
- * string number number if op1 can be converted to number, string else
- * date string date if op1 can be converted to date, string else
- * number number number
- * date number string (maybe we can do better?)
- * date date date
- * none n/a error
- *
- * If a boolean value is required, we need to have a number inside the
- * operand. If it is not, conversion rules to number apply. Once we
- * have a number, things get easy: 0 is false, anything else is true.
- * Please note that due to this conversion rules, "0" becomes false
- * while "-4712" becomes true. Using a date as boolen is not a good
- * idea. Depending on the ultimate conversion rules, it may always
- * become true or false. As such, using dates as booleans is
- * prohibited and the result defined to be undefined.
- *
- * rgerhards, 2008-02-22
- */
-static rsRetVal
-ConvForOperation(var_t *pThis, var_t *pOther)
-{
- DEFiRet;
-
- if(pThis->varType == VARTYPE_NONE || pOther->varType == VARTYPE_NONE)
- ABORT_FINALIZE(RS_RET_INVALID_VAR);
-
- switch(pThis->varType) {
- case VARTYPE_NONE:
- ABORT_FINALIZE(RS_RET_INVALID_VAR);
- break;
- case VARTYPE_STR:
- switch(pOther->varType) {
- case VARTYPE_NONE:
- ABORT_FINALIZE(RS_RET_INVALID_VAR);
- break;
- case VARTYPE_STR:
- FINALIZE; /* two strings, we are all set */
- break;
- case VARTYPE_NUMBER:
- /* check if we can convert pThis to a number, if so use number format. */
- iRet = ConvToNumber(pThis);
- if(iRet == RS_RET_NOT_A_NUMBER) {
- CHKiRet(ConvToString(pOther));
- } else {
- FINALIZE; /* OK or error */
- }
- break;
- case VARTYPE_SYSLOGTIME:
- ABORT_FINALIZE(RS_RET_NOT_IMPLEMENTED);
- break;
- }
- break;
- case VARTYPE_NUMBER:
- switch(pOther->varType) {
- case VARTYPE_NONE:
- ABORT_FINALIZE(RS_RET_INVALID_VAR);
- break;
- case VARTYPE_STR:
- iRet = ConvToNumber(pOther);
- if(iRet == RS_RET_NOT_A_NUMBER) {
- CHKiRet(ConvToString(pThis));
- } else {
- FINALIZE; /* OK or error */
- }
- break;
- case VARTYPE_NUMBER:
- FINALIZE; /* two numbers, so we are all set */
- break;
- case VARTYPE_SYSLOGTIME:
- ABORT_FINALIZE(RS_RET_NOT_IMPLEMENTED);
- break;
- }
- break;
- case VARTYPE_SYSLOGTIME:
- ABORT_FINALIZE(RS_RET_NOT_IMPLEMENTED);
- break;
- }
-
-finalize_it:
- RETiRet;
-}
-
-
/* queryInterface function
* rgerhards, 2008-02-21
*/
@@ -426,14 +108,6 @@ CODESTARTobjQueryInterface(var)
pIf->ConstructFinalize = varConstructFinalize;
pIf->Destruct = varDestruct;
pIf->DebugPrint = varDebugPrint;
- pIf->Obj2Str = Obj2Str;
- pIf->SetNumber = varSetNumber;
- pIf->SetString = varSetString;
- pIf->ConvForOperation = ConvForOperation;
- pIf->ConvToNumber = ConvToNumber;
- pIf->ConvToBool = ConvToBool;
- pIf->ConvToString = ConvToString;
- pIf->Duplicate = Duplicate;
finalize_it:
ENDobjQueryInterface(var)
diff --git a/runtime/var.h b/runtime/var.h
index ae971bb5..75584c82 100644
--- a/runtime/var.h
+++ b/runtime/var.h
@@ -54,16 +54,9 @@ BEGINinterface(var) /* name must also be changed in ENDinterface macro! */
rsRetVal (*Construct)(var_t **ppThis);
rsRetVal (*ConstructFinalize)(var_t __attribute__((unused)) *pThis);
rsRetVal (*Destruct)(var_t **ppThis);
- rsRetVal (*SetNumber)(var_t *pThis, number_t iVal);
- rsRetVal (*SetString)(var_t *pThis, cstr_t *pCStr);
- rsRetVal (*ConvForOperation)(var_t *pThis, var_t *pOther);
- rsRetVal (*ConvToNumber)(var_t *pThis);
- rsRetVal (*ConvToBool)(var_t *pThis);
- rsRetVal (*ConvToString)(var_t *pThis);
- rsRetVal (*Obj2Str)(var_t *pThis, cstr_t*);
- rsRetVal (*Duplicate)(var_t *pThis, var_t **ppNew);
ENDinterface(var)
-#define varCURR_IF_VERSION 1 /* increment whenever you change the interface above! */
+#define varCURR_IF_VERSION 2 /* increment whenever you change the interface above! */
+/* v2 - 2011-07-15/rger: on the way to remove var */
/* prototypes */