mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2026-01-28 01:27:16 +01:00
xml output indentation
This commit is contained in:
parent
8d185bacdb
commit
897a91d11a
3 changed files with 60 additions and 2 deletions
|
|
@ -134,7 +134,7 @@ void add_dm_parameter_to_list(struct list_head *head, char *param_name, char *pa
|
|||
list_for_each_entry(dm_parameter, head, list) {
|
||||
|
||||
if (CWMP_STRCMP(param_name, dm_parameter->name) == 0) {
|
||||
if (CWMP_STRCMP(dm_parameter->value, param_val) != 0) {
|
||||
if (param_val && CWMP_STRCMP(dm_parameter->value, param_val) != 0) {
|
||||
FREE(dm_parameter->value);
|
||||
dm_parameter->value = strdup(param_val);
|
||||
}
|
||||
|
|
|
|||
58
src/xml.c
58
src/xml.c
|
|
@ -26,6 +26,8 @@ static const char *soap_enc_url = "http://schemas.xmlsoap.org/soap/encoding/";
|
|||
static const char *xsd_url = "http://www.w3.org/2001/XMLSchema";
|
||||
static const char *xsi_url = "http://www.w3.org/2001/XMLSchema-instance";
|
||||
|
||||
char *g_tab_space = NULL;
|
||||
|
||||
const char *cwmp_urls[] = { "urn:dslforum-org:cwmp-1-0", "urn:dslforum-org:cwmp-1-1", "urn:dslforum-org:cwmp-1-2", "urn:dslforum-org:cwmp-1-2", "urn:dslforum-org:cwmp-1-2", "urn:dslforum-org:cwmp-1-2", NULL };
|
||||
|
||||
struct xml_node_data xml_nodes_data[] = {
|
||||
|
|
@ -1376,7 +1378,9 @@ int xml_send_message(struct rpc *rpc)
|
|||
|
||||
if (cwmp_main->session->tree_out) {
|
||||
unsigned char *zmsg_out;
|
||||
msg_out = mxmlSaveAllocString(cwmp_main->session->tree_out, MXML_NO_CALLBACK);
|
||||
|
||||
msg_out = mxmlSaveAllocString(cwmp_main->session->tree_out, whitespace_cb);
|
||||
FREE(g_tab_space);
|
||||
if (msg_out == NULL) {
|
||||
CWMP_LOG(ERROR, "Received tree_out is empty");
|
||||
return -1;
|
||||
|
|
@ -1773,3 +1777,55 @@ void load_response_xml_schema(mxml_node_t **schema)
|
|||
|
||||
*schema = xml;
|
||||
}
|
||||
|
||||
const char *get_node_tab_space(mxml_node_t *node)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
while ((node = mxmlGetParent(node))) {
|
||||
count = count + 1;
|
||||
}
|
||||
|
||||
if (!count)
|
||||
return "";
|
||||
|
||||
FREE(g_tab_space);
|
||||
unsigned int size = count * sizeof(CWMP_MXML_TAB_SPACE) + 1;
|
||||
g_tab_space = (char *)malloc(size);
|
||||
if (!g_tab_space) {
|
||||
CWMP_LOG(ERROR, "Not able to allocate memory of size %u", size);
|
||||
return "";
|
||||
}
|
||||
|
||||
memset(g_tab_space, 0, size);
|
||||
snprintf(g_tab_space, size, "%*s", size - 1, "");
|
||||
|
||||
return g_tab_space;
|
||||
}
|
||||
|
||||
const char *whitespace_cb(mxml_node_t *node, int where)
|
||||
{
|
||||
if (mxmlGetType(node) != MXML_ELEMENT)
|
||||
return NULL;
|
||||
|
||||
switch (where) {
|
||||
case MXML_WS_BEFORE_CLOSE:
|
||||
if (mxmlGetFirstChild(node) && mxmlGetType(mxmlGetFirstChild(node)) != MXML_ELEMENT)
|
||||
return NULL;
|
||||
|
||||
return get_node_tab_space(node);
|
||||
case MXML_WS_BEFORE_OPEN:
|
||||
if (where == MXML_WS_BEFORE_CLOSE && mxmlGetFirstChild(node) && mxmlGetType(mxmlGetFirstChild(node)) != MXML_ELEMENT)
|
||||
return NULL;
|
||||
|
||||
return get_node_tab_space(node);
|
||||
case MXML_WS_AFTER_OPEN:
|
||||
return ((mxmlGetFirstChild(node) == NULL || mxmlGetType(mxmlGetFirstChild(node)) == MXML_ELEMENT) ? "\n" : NULL);
|
||||
case MXML_WS_AFTER_CLOSE:
|
||||
return "\n";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -346,4 +346,6 @@ int build_backup_cdu_option(mxml_node_t *cdu, struct xml_data_struct *xml_attrs)
|
|||
int get_soap_enc_array_type(mxml_node_t *node, struct xml_data_struct *xml_attrs);
|
||||
char *get_xml_node_name_switch(char *node_name);
|
||||
char *get_xml_node_name_by_switch_name(char *switch_node_name);
|
||||
const char *whitespace_cb(mxml_node_t *node, int where);
|
||||
const char *get_node_tab_space(mxml_node_t *node);
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue