From: Dave H. <hel...@us...> - 2014-03-22 15:33:59
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "sfcb - Small Footprint CIM Broker". The branch, master has been updated via 0b313d3cb801e0864101854742ada8361be38f1a (commit) from c670aaa7544155b6acedb95d60d3421147ab34f8 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0b313d3cb801e0864101854742ada8361be38f1a Author: Dave Heller <hel...@us...> Date: Sat Mar 22 11:32:35 2014 -0400 [sfcb-tix:#105] Add config property embeddedObjectEncoding ----------------------------------------------------------------------- Summary of changes: cimXmlGen.c | 26 ++++++++++++++++++-------- control.c | 2 ++ sfcBroker.c | 9 +++++++++ sfcb.cfg.pre.in | 5 +++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/cimXmlGen.c b/cimXmlGen.c index b2cf79d..8e462b3 100644 --- a/cimXmlGen.c +++ b/cimXmlGen.c @@ -611,10 +611,14 @@ value2xml(CMPIData d, UtilStringBuffer * sb, int wv) splen = 0; } } else if (d.type == CMPI_instance) { - // SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA["); - // instance2xml(d.value.inst, sb, 0); - // SFCB_APPENDCHARS_BLOCK(sb, "]]>"); - add_escaped_instance(sb, d.value.inst); + extern int useCDATA; + if (useCDATA) { + SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA["); + instance2xml(d.value.inst, sb, 0); + SFCB_APPENDCHARS_BLOCK(sb, "]]>"); + } else { + add_escaped_instance(sb, d.value.inst); + } splen = 0; } else { mlogf(M_ERROR, M_SHOW, "%s(%d): invalid value2xml %d-%x\n", __FILE__, @@ -773,6 +777,7 @@ data2xml(CMPIData *data, CMPIString *name, if (embInst == 1) { SFCB_APPENDCHARS_BLOCK(sb, "\" EmbeddedObject=\"instance"); } else { + SFCB_APPENDCHARS_BLOCK(sb, "string"); SFCB_APPENDCHARS_BLOCK(sb, "\" EmbeddedObject=\"object"); } } else { @@ -836,12 +841,17 @@ data2xml(CMPIData *data, CMPIString *name, SFCB_APPENDCHARS_BLOCK(sb, "\" PARAMTYPE=\"string\">\n"); else SFCB_APPENDCHARS_BLOCK(sb, "\" TYPE=\"string\">\n"); + if (data->value.inst) { SFCB_APPENDCHARS_BLOCK(sb, "<VALUE>"); - // SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA["); - // instance2xml(data->value.inst, sb, 0); - // SFCB_APPENDCHARS_BLOCK(sb, "]]>"); - add_escaped_instance(sb, data->value.inst); + extern int useCDATA; + if (useCDATA) { + SFCB_APPENDCHARS_BLOCK(sb, "<![CDATA["); + instance2xml(data->value.inst, sb, 0); + SFCB_APPENDCHARS_BLOCK(sb, "]]>"); + } else { + add_escaped_instance(sb, data->value.inst); + } SFCB_APPENDCHARS_BLOCK(sb, "</VALUE>\n"); } } diff --git a/control.c b/control.c index 3239cbf..5c562cf 100644 --- a/control.c +++ b/control.c @@ -73,6 +73,7 @@ char *ip6List= NULL; char **origArgv; int origArgc; +int useCDATA; unsigned int labelProcs; /** @@ -149,6 +150,7 @@ static Control init[] = { {"useChunking", CTL_STRING, "true", {0}}, {"chunkSize", CTL_LONG, NULL, {.slong=50000}}, {"maxChunkObjCount", CTL_ULONG, NULL, {.ulong=0}}, + {"embeddedObjEncoding", CTL_STRING, "xmlescape", {0}}, {"trimWhitespace", CTL_BOOL, NULL, {.b=1}}, diff --git a/sfcBroker.c b/sfcBroker.c index 67b1f9e..ca043c9 100644 --- a/sfcBroker.c +++ b/sfcBroker.c @@ -957,6 +957,15 @@ main(int argc, char *argv[]) trimws = 0; } + char *eoe; + extern int useCDATA; + if (!getControlChars("embeddedObjEncoding",&eoe) && !strcasecmp(eoe,"CDATA")) { + useCDATA = 1; + mlogf(M_INFO,M_SHOW,"--- Use CDATA for EmbeddedObject encoding\n"); + } else { + mlogf(M_INFO,M_SHOW,"--- Use XML escaping for EmbeddedObject encoding\n"); + } + if ((enableHttp || enableHttps) && dSockets > 0) { startHttp = 1; } diff --git a/sfcb.cfg.pre.in b/sfcb.cfg.pre.in index 3f768a6..6affe33 100644 --- a/sfcb.cfg.pre.in +++ b/sfcb.cfg.pre.in @@ -144,6 +144,11 @@ basicAuthEntry: _sfcBasicAuthenticate ## Default is true #trimWhitespace: true +## Sets the encoding style to be used for returning an EmbeddedObject over +## CIM-XML. Choices are "CDATA" or "xmlescape" +## Default is xmlescape +# embeddedObjEncoding: xmlescape + ##---------------------------- Provider-Related ------------------------------- ## Max number of provider processes. hooks/post-receive -- sfcb - Small Footprint CIM Broker |