- fprintf (out, "%*s", level, "");
- switch (n->which)
- {
- case DATA1N_root:
- fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
- break;
- case DATA1N_tag:
- fprintf (out, "tag type=%s\n", n->u.tag.tag);
- break;
- case DATA1N_data:
- fprintf (out, "data type=");
- switch (n->u.data.what)
- {
- case DATA1I_inctxt:
- fprintf (out, "inctxt\n");
- break;
- case DATA1I_incbin:
- fprintf (out, "incbin\n");
- break;
- case DATA1I_text:
- fprintf (out, "text '%.*s'\n", n->u.data.len, n->u.data.data);
- break;
- case DATA1I_num:
- fprintf (out, "num %.*s\n", n->u.data.len, n->u.data.data);
- break;
- case DATA1I_oid:
- fprintf (out, "oid %.*s\n", n->u.data.len, n->u.data.data);
- break;
- default:
- fprintf (out, "unknown(%d)\n", n->u.data.what);
- break;
- }
- break;
- case DATA1N_variant:
- fprintf (out, "variant\n");
+ fprintf (out, "%*s", level, "");
+ switch (n->which)
+ {
+ case DATA1N_root:
+ fprintf (out, "root abstract syntax=%s\n", n->u.root.type);
+ break;
+ case DATA1N_tag:
+ fprintf (out, "tag type=%s\n", n->u.tag.tag);
+ if (n->u.tag.attributes)
+ {
+ data1_xattr *xattr = n->u.tag.attributes;
+ fprintf (out, "%*s attr", level, "");
+ for (; xattr; xattr = xattr->next)
+ fprintf (out, " %s=%s ", xattr->name, xattr->value);
+ fprintf (out, "\n");
+ }
+ break;
+ case DATA1N_data:
+ case DATA1N_comment:
+ if (n->which == DATA1N_data)
+ fprintf (out, "data type=");
+ else
+ fprintf (out, "comment type=");
+ switch (n->u.data.what)
+ {
+ case DATA1I_inctxt:
+ fprintf (out, "inctxt\n");
+ break;
+ case DATA1I_incbin:
+ fprintf (out, "incbin\n");
+ break;
+ case DATA1I_text:
+ fprintf (out, "text '");
+ pr_string (out, n->u.data.data, n->u.data.len);
+ fprintf (out, "'\n");
+ break;
+ case DATA1I_num:
+ fprintf (out, "num '");
+ pr_string (out, n->u.data.data, n->u.data.len);
+ fprintf (out, "'\n");
+ break;
+ case DATA1I_oid:
+ fprintf (out, "oid '");
+ pr_string (out, n->u.data.data, n->u.data.len);
+ fprintf (out, "'\n");
+ break;
+ default:
+ fprintf (out, "unknown(%d)\n", n->u.data.what);
+ break;
+ }
+ break;
+ case DATA1N_preprocess:
+ fprintf (out, "preprocess target=%s\n", n->u.preprocess.target);
+ if (n->u.preprocess.attributes)
+ {
+ data1_xattr *xattr = n->u.preprocess.attributes;
+ fprintf (out, "%*s attr", level, "");
+ for (; xattr; xattr = xattr->next)
+ fprintf (out, " %s=%s ", xattr->name, xattr->value);
+ fprintf (out, "\n");
+ }
+ break;
+ case DATA1N_variant:
+ fprintf (out, "variant\n");