summaryrefslogtreecommitdiffstats
path: root/plugins/mmpstrucdata/mmpstrucdata.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-09-23 17:20:41 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-09-23 17:20:41 +0200
commit33a3a0852c0921da5aaa8354d19537bb6c5cb786 (patch)
treebd46233178f8858dfd09a5b54016ab91fafa50c3 /plugins/mmpstrucdata/mmpstrucdata.c
parent593c8e41d156da2a26c209efd8da452874b73b4c (diff)
downloadrsyslog-33a3a0852c0921da5aaa8354d19537bb6c5cb786.tar.gz
rsyslog-33a3a0852c0921da5aaa8354d19537bb6c5cb786.tar.bz2
rsyslog-33a3a0852c0921da5aaa8354d19537bb6c5cb786.zip
milestone: mmpstrucdata persists to json tree
but not yet to a specific subtree
Diffstat (limited to 'plugins/mmpstrucdata/mmpstrucdata.c')
-rw-r--r--plugins/mmpstrucdata/mmpstrucdata.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/plugins/mmpstrucdata/mmpstrucdata.c b/plugins/mmpstrucdata/mmpstrucdata.c
index b794af8c..0fc559cd 100644
--- a/plugins/mmpstrucdata/mmpstrucdata.c
+++ b/plugins/mmpstrucdata/mmpstrucdata.c
@@ -216,11 +216,12 @@ dbgprintf("DDDD: parseSD_NAME, NAME: '%s'\n", namebuf);
static inline rsRetVal
-parseSD_PARAM(instanceData *pData, uchar *sdbuf, int lenbuf, int *curridx)
+parseSD_PARAM(instanceData *pData, uchar *sdbuf, int lenbuf, int *curridx, struct json_object *jroot)
{
int i;
uchar pName[33];
uchar pVal[32*1024];
+ struct json_object *jval;
DEFiRet;
dbgprintf("DDDD: parseSD_PARAM %s\n", sdbuf+*curridx);
@@ -240,6 +241,9 @@ dbgprintf("DDDD: parseSD_PARAM %s\n", sdbuf+*curridx);
}
++i;
+ jval = json_object_new_string((char*)pVal);
+ json_object_object_add(jroot, (char*)pName, jval);
+
*curridx = i;
finalize_it:
RETiRet;
@@ -247,10 +251,11 @@ finalize_it:
static inline rsRetVal
-parseSD_ELEMENT(instanceData *pData, uchar *sdbuf, int lenbuf, int *curridx)
+parseSD_ELEMENT(instanceData *pData, uchar *sdbuf, int lenbuf, int *curridx, struct json_object *jroot)
{
int i;
uchar sd_id[33];
+ struct json_object *json;
DEFiRet;
dbgprintf("DDDD: parseSD_ELEMENT: %s\n", sdbuf+*curridx);
@@ -261,6 +266,7 @@ dbgprintf("DDDD: parseSD_ELEMENT: %s\n", sdbuf+*curridx);
++i; /* eat '[' */
CHKiRet(parseSD_NAME(sdbuf, lenbuf, &i, sd_id));
+ json = json_object_new_object();
while(i < lenbuf) {
if(sdbuf[i] == ']') {
@@ -271,7 +277,7 @@ dbgprintf("DDDD: parseSD_ELEMENT: %s\n", sdbuf+*curridx);
++i;
while(i < lenbuf && sdbuf[i] == ' ')
++i;
- CHKiRet(parseSD_PARAM(pData, sdbuf, lenbuf, &i));
+ CHKiRet(parseSD_PARAM(pData, sdbuf, lenbuf, &i, json));
dbgprintf("DDDD: done parseSD_PARAM, in loop, i:%d, lenbuf:%d, rest: %s\n", i, lenbuf, sdbuf+i);
}
@@ -282,6 +288,9 @@ dbgprintf("DDDD: done parseSD_PARAM, in loop, i:%d, lenbuf:%d, rest: %s\n", i, l
}
++i; /* eat ']' */
*curridx = i;
+ json_object_object_add(jroot, (char*)sd_id, json);
+dbgprintf("DDDD: SD_ELEMENT: json: '%s'\n", json_object_get_string(json));
+dbgprintf("DDDD: SD_ELEMENT: jroot '%s'\n", json_object_get_string(json));
finalize_it:
dbgprintf("DDDD: parseSD_ELEMENT iRet:%d, i:%d, *curridx:%d\n", iRet, i, *curridx);
RETiRet;
@@ -298,6 +307,7 @@ parse_sd(instanceData *pData, msg_t *pMsg)
int field;
uchar *buf;
#endif
+ struct json_object *json;
uchar *sdbuf;
int lenbuf;
int i = 0;
@@ -312,28 +322,17 @@ parse_sd(instanceData *pData, msg_t *pMsg)
#endif
dbgprintf("DDDD: parse_sd\n");
- MsgGetStructuredData(pMsg, &sdbuf,&lenbuf);
- while(i < lenbuf) {
- CHKiRet(parseSD_ELEMENT(pData, sdbuf, lenbuf, &i));
-dbgprintf("DDDD: parse_sd, i:%d\n", i);
- }
-#if 0
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("mmpstrucdata: field %d: '%s'\n", field, buf);
- snprintf((char*)fieldname, sizeof(fieldname), "f%d", field);
- fieldname[sizeof(fieldname)-1] = '\0';
- jval = json_object_new_string((char*)fieldbuf);
- json_object_object_add(json, (char*)fieldname, jval);
- field++;
+ MsgGetStructuredData(pMsg, &sdbuf,&lenbuf);
+ while(i < lenbuf) {
+ CHKiRet(parseSD_ELEMENT(pData, sdbuf, lenbuf, &i, json));
+dbgprintf("DDDD: parse_sd, i:%d\n", i);
}
+dbgprintf("DDDD: json: '%s'\n", json_object_get_string(json));
msgAddJSON(pMsg, pData->jsonRoot, json);
-#endif
finalize_it:
RETiRet;
}