Index: work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9556) +++ work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9557) @@ -2096,7 +2096,6 @@ int read_block(long *numblocks, int level, void *ctx, FILE *f, const char *fn, egb_node_t *parent) { unsigned char block[24]; - char tmp[25]; const pcb_eagle_script_t *sc; const subsect_t *ss; const attrs_t *at; @@ -2145,29 +2144,37 @@ found:; - if (sc->name != NULL) + if (sc->name != NULL) { printf("%s[%s (%x)]\n", ind, sc->name, sc->cmd); - else + parent = egb_node_append(parent, egb_node_alloc(sc->cmd, sc->name)); + } + else { printf("%s[UNKNOWN (%x)]\n", ind, sc->cmd); + parent = egb_node_append(parent, egb_node_alloc(sc->cmd, "UNKNOWN")); + } for(at = sc->attrs; at->name != NULL; at++) { + char buff[128]; + *buff = '\0'; switch(at->type) { case T_BMB: - printf("%s %s=%d\n", ind, at->name, load_bmb(block, at->offs, at->len)); + sprintf(buff, "%d", load_bmb(block, at->offs, at->len)); break; case T_UBF: - printf("%s %s=%ld\n", ind, at->name, load_ubf(block, at->offs, at->len)); + sprintf(buff, "%ld", load_ubf(block, at->offs, at->len)); break; case T_INT: - printf("%s %s=%ld\n", ind, at->name, load_long(block, at->offs, at->len)); + sprintf(buff, "%ld", load_long(block, at->offs, at->len)); break; case T_DBL: - printf("%s %s=%f\n", ind, at->name, load_double(block, at->offs, at->len)); + sprintf(buff, "%f", load_double(block, at->offs, at->len)); break; case T_STR: - printf("%s %s='%s'\n", ind, at->name, load_str(block, tmp, at->offs, at->len)); + load_str(block, buff, at->offs, at->len); break; } + printf("%s %s=%s\n", ind, at->name, buff); + egb_node_prop_set(parent, at->name, buff); } *numblocks = *numblocks - 1;