summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/mmfields/mmfields.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/plugins/mmfields/mmfields.c b/plugins/mmfields/mmfields.c
index 618ad876..99c78916 100644
--- a/plugins/mmfields/mmfields.c
+++ b/plugins/mmfields/mmfields.c
@@ -137,14 +137,12 @@ CODESTARTnewActInst
continue;
if(!strcmp(actpblk.descr[i].name, "separator")) {
pData->separator = es_getBufAddr(pvals[i].val.d.estr)[0];
-dbgprintf("DDDD: separator set to %d [%c]\n", pData->separator, pData->separator);
} else {
dbgprintf("mmfields: program error, non-handled "
"param '%s'\n", actpblk.descr[i].name);
}
}
-dbgprintf("DDDD: separator IS %d [%c]\n", pData->separator, pData->separator);
CODE_STD_FINALIZERnewActInst
cnfparamvalsDestruct(pvals, &actpblk);
ENDnewActInst
@@ -178,10 +176,14 @@ extractField(instanceData *pData, uchar *msgtext, int lenMsg, int *curridx, ucha
RETiRet;
}
+
static inline rsRetVal
parse_fields(instanceData *pData, msg_t *pMsg, uchar *msgtext, int lenMsg)
{
uchar fieldbuf[32*1024];
+ uchar fieldname[512];
+ struct json_object *json;
+ struct json_object *jval;
int field;
uchar *buf;
int currIdx = 0;
@@ -193,12 +195,21 @@ parse_fields(instanceData *pData, msg_t *pMsg, uchar *msgtext, int lenMsg)
CHKmalloc(buf = malloc(lenMsg+1));
}
+ json = json_object_new_object();
+ if(json == NULL) {
+ ABORT_FINALIZE(RS_RET_ERR);
+ }
field = 1;
while(currIdx < lenMsg) {
CHKiRet(extractField(pData, msgtext, lenMsg, &currIdx, buf));
DBGPRINTF("mmfields: field %d: '%s'\n", field, buf);
+ snprintf(fieldname, sizeof(fieldname), "f%d", (char*)field);
+ fieldname[sizeof(fieldname)-1] = '\0';
+ jval = json_object_new_string((char*)fieldbuf);
+ json_object_object_add(json, (char*)fieldname, jval);
field++;
}
+ msgAddJSON(pMsg, (uchar*)"!", json);
finalize_it:
RETiRet;
}