--- embedtools/src/Attic/xmler.c 2010/09/28 11:01:18 1.1.2.3 +++ embedtools/src/Attic/xmler.c 2010/09/28 11:37:04 1.1.2.4 @@ -99,8 +99,6 @@ main(int argc, char **argv) } switch (m) { - case 's': - break; case 'g': if (!xr.xml_namespace.vallen) { if (ret == 32) { @@ -189,6 +187,46 @@ main(int argc, char **argv) printf("%s\n", ctx); ret = 0; break; + case 's': + if (!xr.xml_namespace.vallen) { + if (ret == 32) { + // insert new + } else { + // update old + if (!(node = axl_doc_find_called(doc, xr.xml_node.container.value))) { + printf("SET:: node %s - not found!\n", xr.xml_node.container.value); + ret = 1; + goto end; + } + } + } else { + strlcpy(str, xr.xml_namespace.value, sizeof str); + strlcat(str, ":", sizeof str); + strlcat(str, xr.xml_node.container.value, sizeof str); + if (ret == 32) { + // insert new + } else { + // update old + if (!(node = axl_doc_find_called(doc, str))) { + printf("SET:: node %s:%s - not found!\n", xr.xml_namespace.value, + xr.xml_node.container.value); + ret = 1; + goto end; + } + } + } + + if (!(ret & 32) && xr.xml_data.vallen) { + axl_node_set_is_empty(node, 1); + axl_node_set_content(node, xr.xml_data.value, xr.xml_data.vallen); + } + if (!(ret & 32) && xr.xml_attribute.vallen) { + axl_node_remove_attribute(node, xr.xml_attribute.value); + axl_node_set_attribute(node, xr.xml_attribute.value, xr.xml_value.value); + } + + xr.xml_data = xr.xml_node.container; + ret = 0; default: if (xr.xml_data.vallen) { if (!(node = axl_doc_find_called(doc, xr.xml_data.value))) {