diff --git a/src/pprint.c b/src/pprint.c index 2c9fbc2e96fdc3314d3df5b7d471a47c5d8c50a4..6747a2a8f7d6cef2bc1b352563e56380b7c0a3b5 100644 --- a/src/pprint.c +++ b/src/pprint.c @@ -32,16 +32,17 @@ typedef struct pp_state { } pp_state_t; void h_pprint(FILE* stream, const HParsedToken* tok, int indent, int delta) { + fprintf(stream, "%*s", indent, ""); if (tok == NULL) { - fprintf(stream, "%*s(null)\n", indent, ""); + fprintf(stream, "(null)\n"); return; } switch (tok->token_type) { case TT_NONE: - fprintf(stream, "%*snone\n", indent, ""); + fprintf(stream, "none"); break; case TT_BYTES: - fprintf(stream, "%*s\"", indent, ""); + fprintf(stream, "\""); for (size_t i = 0; i < tok->bytes.len; i++) { uint8_t c = tok->bytes.token[i]; if (isprint(c)) @@ -49,35 +50,38 @@ void h_pprint(FILE* stream, const HParsedToken* tok, int indent, int delta) { else fprintf(stream, "\\%03hho", c); } - fprintf(stream, "\"\n"); + fprintf(stream, "\""); break; case TT_SINT: if (tok->sint < 0) - fprintf(stream, "%*ss -%#" PRIx64 "\n", indent, "", -tok->sint); + fprintf(stream, "s -%#" PRIx64, -tok->sint); else - fprintf(stream, "%*ss %#" PRIx64 "\n", indent, "", tok->sint); + fprintf(stream, "s %#" PRIx64, tok->sint); break; case TT_UINT: - fprintf(stream, "%*su %#" PRIx64 "\n", indent, "", tok->uint); + fprintf(stream, "u %#" PRIx64, tok->uint); break; case TT_SEQUENCE: - fprintf(stream, "%*s[\n", indent, ""); - for (size_t i = 0; i < tok->seq->used; i++) { - h_pprint(stream, tok->seq->elements[i], indent + delta, delta); + if (tok->seq->used == 0) + fprintf(stream, "[]"); + else { + fprintf(stream, "[\n"); + for (size_t i = 0; i < tok->seq->used; i++) + h_pprint(stream, tok->seq->elements[i], indent + delta, delta); + fprintf(stream, "%*s]", indent, ""); } - fprintf(stream, "%*s]\n", indent, ""); break; default: if(tok->token_type >= TT_USER) { const HTTEntry *e = h_get_token_type_entry(tok->token_type); - int num = tok->token_type-TT_USER; - fprintf(stream, "%*sUSER:%s %d\n", indent, "", e->name, num); + fprintf(stream, "USER %d (%s) ", e->value - TT_USER, e->name); if (e->pprint) e->pprint(stream, tok, indent + delta, delta); } else { assert_message(0, "Should not reach here."); } } + fputc('\n', stream); }