X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=utils%2Fxmlgrep%2Fprinttree.c;h=6998b1397703fd155cf752150b344ea745035194;hb=a89a28c4e62a63e05b6b889274fa848ea2bda007;hp=674a7d14aafc0d8b878244248435decc2da17bce;hpb=783fa8dd7d7de47dee073ab73e6213a2d85f3f6e;p=flightgear.git diff --git a/utils/xmlgrep/printtree.c b/utils/xmlgrep/printtree.c index 674a7d14a..6998b1397 100644 --- a/utils/xmlgrep/printtree.c +++ b/utils/xmlgrep/printtree.c @@ -4,7 +4,7 @@ #include "xml.h" -void print_xml(void *, char *, int); +void print_xml(void *, char *, unsigned int); int main(int argc, char **argv) { @@ -47,7 +47,7 @@ int main(int argc, char **argv) } } -void print_xml(void *id, char *name, int len) +void print_xml(void *id, char *name, unsigned int len) { void *xid = xmlMarkId(id); unsigned int i, num; @@ -59,6 +59,7 @@ void print_xml(void *id, char *name, int len) s = xmlGetString(xid); if (s) { + name[len] = 0; printf("%s = %s\n", name, s); free(s); } @@ -72,8 +73,21 @@ void print_xml(void *id, char *name, int len) { if (xmlNodeGetPos(id, xid, "*", i) != 0) { - int res, i = 4096 - len; + unsigned int res, i = 4096 - len; res = xmlNodeCopyName(xid, (char *)&name[len], i); + if (res) + { + unsigned int index = xmlAttributeGetInt(xid, "n"); + if (index) + { + unsigned int pos = len+res; + + name[pos++] = '['; + i = snprintf((char *)&name[pos], 4096-pos, "%i", index); + name[pos+i] = ']'; + res += i+2; + } + } print_xml(xid, name, len+res); } else printf("error\n");