Index: work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.c =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.c (revision 9540) +++ work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.c (revision 9541) @@ -63,3 +63,29 @@ free(node); } +static char inds[] = " "; +static void egb_dump_(FILE *f, int ind, egb_node_t *node) +{ + htss_entry_t *e; + int i; + egb_node_t *n; + + if (ind >= sizeof(inds)-1) + ind = sizeof(inds)-1; + inds[ind] = '\0'; + fprintf(f, "%s%s/%04x [", inds, node->id_name, node->id); + inds[ind] = ' '; + + for (e = htss_first(&node->props), i = 0; e; e = htss_next(&node->props, e), i++) + fprintf(f, "%s%s=\"%s\"", (i > 0 ? " " : ""), e->key, e->value); + fprintf(f, "]\n"); + + for(n = node->first_child; n != NULL; n = n->next) + egb_dump_(f, ind+1, n); +} + +void egb_dump(FILE *f, egb_node_t *node) +{ + egb_dump_(f, 0, node); +} + Index: work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.h =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.h (revision 9540) +++ work/alien_formats/eagle/eagle_bin/test_parser/egb_tree.h (revision 9541) @@ -1,5 +1,6 @@ /* eagle binary file tree representation */ +#include #include typedef struct egb_node_s egb_node_t; @@ -21,3 +22,4 @@ void egb_node_prop_set(egb_node_t *node, const char *key, const char *val); char *egb_node_prop_get(egb_node_t *node, const char *key); +void egb_dump(FILE *f, egb_node_t *node);