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); }