--- embedtools/src/Attic/xmler.c 2010/09/27 18:19:57 1.1.2.2 +++ embedtools/src/Attic/xmler.c 2010/09/28 11:01:18 1.1.2.3 @@ -26,7 +26,7 @@ int main(int argc, char **argv) { char ch, *ctx, str[STRSIZ], szName[MAXPATHLEN], m = 0; - int ctxlen, ret = 0; + int ctxlen, n, ret = 0; axlDoc *doc = NULL; axlError *err = NULL; axlNode *node = NULL; @@ -103,82 +103,110 @@ main(int argc, char **argv) break; case 'g': if (!xr.xml_namespace.vallen) { - if (!(node = axl_doc_find_called(doc, xr.xml_container.value))) { - printf("GET:: node %s - not found!\n", xr.xml_container.value); - ret = 1; - goto end; + if (ret == 32) { + if (!(ctx = (char*) axl_doc_get_content_at(doc, xr.xml_node.path.value, &ctxlen))) { + printf("GET:: path %s - not found!\n", xr.xml_node.path.value); + ret = 1; + goto end; + } + } else { + if (!(node = axl_doc_find_called(doc, xr.xml_node.container.value))) { + printf("GET:: 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_container.value, sizeof str); - if (!(node = axl_doc_find_called(doc, str))) { - printf("GET:: node %s:%s - not found!\n", xr.xml_namespace.value, - xr.xml_container.value); - ret = 1; - goto end; + strlcat(str, xr.xml_node.container.value, sizeof str); + if (ret == 32) { + if (!(ctx = (char*) axl_doc_get_content_at(doc, str, &ctxlen))) { + printf("GET:: path %s:%s - not found!\n", xr.xml_namespace.value, + xr.xml_node.path.value); + ret = 1; + goto end; + } + } else { + if (!(node = axl_doc_find_called(doc, str))) { + printf("GET:: node %s:%s - not found!\n", xr.xml_namespace.value, + xr.xml_node.container.value); + ret = 1; + goto end; + } } } - if (xr.xml_data.vallen) { + if (!(ret & 32) && xr.xml_data.vallen) { if (!(ctx = (char*) axl_node_get_content(node, &ctxlen))) { - axl_node_free(node); printf("GET:: data %s for node %s - not found!\n", - xr.xml_data.value, xr.xml_attribute.value); + xr.xml_data.value, xr.xml_node.container.value); ret = 1; goto end; } else VERB(3) printf("Verbose(3):: Returned bytes %d\n", ctxlen); VERB(1) printf("\n"); - if (!(ret = strcmp(ctx, xr.xml_data.value))) + if (!strcmp(ctx, xr.xml_data.value)) printf("DATA::1\n"); else printf("DATA::0\n"); } - if (xr.xml_attribute.vallen) { - if ((ret = axl_node_num_attributes(node)) < 1) { - axl_node_free(node); + if (!(ret & 32) && xr.xml_attribute.vallen) { + if ((n = axl_node_num_attributes(node)) < 1) { printf("GET:: attribute %s for node %s - not found!\n", - xr.xml_container.value, xr.xml_attribute.value); + xr.xml_attribute.value, xr.xml_node.container.value); ret = 1; goto end; } else { - VERB(1) printf("Verbose:: node have %d attributes\n", ret); + VERB(1) printf("Verbose:: node have %d attributes\n", n); if (!(ctx = (char*) axl_node_get_attribute_value(node, xr.xml_attribute.value))) { - axl_node_free(node); printf("GET:: attribute %s for node %s - not found!\n", - xr.xml_container.value, xr.xml_attribute.value); + xr.xml_attribute.value, xr.xml_node.container.value); ret = 1; goto end; } if (xr.xml_value.vallen) { - if (!(ret = strcmp(ctx, xr.xml_value.value))) + if (!strcmp(ctx, xr.xml_value.value)) ctx = "VALUE::1"; else ctx = "VALUE::0"; } } } else { - axl_node_dump_pretty(node, &ctx, &ctxlen, 4); - VERB(1) printf("Verbose:: Node length=%d\n", ctxlen); + if (!(ret & 32) && !(ctx = (char*) axl_node_get_content(node, &ctxlen))) { + printf("GET:: data for node %s - not found!\n", xr.xml_node.container.value); + ret = 1; + goto end; + } else + VERB(3) printf("Verbose(3):: Returned bytes %d\n", ctxlen); } VERB(1) printf("\n"); printf("%s\n", ctx); - axl_node_free(node); ret = 0; break; default: - axl_doc_dump_pretty(doc, &ctx, &ctxlen, 4); - VERB(1) printf("Verbose:: Document length=%d\n", ctxlen); + if (xr.xml_data.vallen) { + if (!(node = axl_doc_find_called(doc, xr.xml_data.value))) { + printf("GET:: node %s - not found!\n", xr.xml_data.value); + ret = 1; + goto end; + } + axl_node_dump_pretty(node, &ctx, &ctxlen, 4); + VERB(1) printf("Verbose:: Node length=%d\n", ctxlen); + } else { + axl_doc_dump_pretty(doc, &ctx, &ctxlen, 4); + VERB(1) printf("Verbose:: Document length=%d\n", ctxlen); + } VERB(1) printf("\n"); printf("%s\n", ctx); - free(ctx); + if (ctx) + free(ctx); } end: axl_doc_free(doc);