From a0d225f5b8aa21987c4018259d75a14d306b0ce6 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" <pesco@khjk.org> Date: Mon, 25 Nov 2019 00:10:43 +0100 Subject: [PATCH] a bit more pprint prettification --- src/pprint.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/pprint.c b/src/pprint.c index 2c9fbc2e..6747a2a8 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); } -- GitLab