diff options
author | Jo-Philipp Wich <jo@mein.io> | 2024-12-06 10:07:46 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2024-12-06 10:07:46 +0100 |
commit | 0a7ff4715cb8ec863ed061443aa77f986c840507 (patch) | |
tree | 01787fa9a33d75533d797841c1c444f169a9f84e | |
parent | c71444ea301f0968476ea5bf1b8912b0b65308d7 (diff) |
main: pretty-print `-p` output by default
When outputting non-string expression results while running the cli
interpreter using the `-p` flag, pretty-print the resulting JSON data
for better readability.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | main.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -145,11 +145,18 @@ compile(uc_vm_t *vm, uc_source_t *src, FILE *precompile, bool strip, char *inter switch (rc) { case STATUS_OK: if (print_result) { - uc_vm_stack_push(vm, res); - uc_vm_stack_push(vm, ucv_string_new("\n")); - uc_stdlib_function("print")(vm, 2); - uc_vm_stack_pop(vm); - uc_vm_stack_pop(vm); + if (ucv_type(res) == UC_STRING) { + fwrite(ucv_string_get(res), ucv_string_length(res), 1, stdout); + } + else { + uc_stringbuf_t *pb = xprintbuf_new(); + + ucv_to_stringbuf_formatted(vm, pb, res, 0, '\t', 1); + fwrite(pb->buf, pb->bpos, 1, stdout); + printbuf_free(pb); + } + + ucv_put(res); } rc = 0; |