]> git.mxchange.org Git - flightgear.git/blobdiff - utils/xmlgrep/printtree.c
Merge branch 'ehofman/version'
[flightgear.git] / utils / xmlgrep / printtree.c
index 674a7d14aafc0d8b878244248435decc2da17bce..6998b1397703fd155cf752150b344ea745035194 100644 (file)
@@ -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");