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