From 3f9a365d366e8fed4f2d02bbb6f1a4e117593431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Mon, 22 May 2023 04:35:00 +0200 Subject: [PATCH] xC: improve the --format mode Avoid having formatting spill over the rest of the line, by placing the automatic formatting reset before newlines. Also handle longer lines properly. --- xC.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/xC.c b/xC.c index 200d159..fdf1325 100644 --- a/xC.c +++ b/xC.c @@ -16004,14 +16004,29 @@ show_logo (struct app_context *ctx) static void format_input_and_die (struct app_context *ctx) { - char buf[513]; - while (fgets (buf, sizeof buf, stdin)) + // XXX: it might make sense to allow for redirection, using FLUSH_OPT_RAW + struct str s = str_make (); + int c = 0; + while ((c = fgetc (stdin)) != EOF) { + if (c != '\n') + { + str_append_c (&s, c); + continue; + } + struct formatter f = formatter_make (ctx, NULL); - formatter_add (&f, "#m", buf); + formatter_add (&f, "#m\n", s.str); formatter_flush (&f, stdout, FLUSH_OPT_NOWRAP); formatter_free (&f); + str_reset (&s); } + + struct formatter f = formatter_make (ctx, NULL); + formatter_add (&f, "#m", s.str); + formatter_flush (&f, stdout, FLUSH_OPT_NOWRAP); + formatter_free (&f); + str_free (&s); exit (EXIT_SUCCESS); }