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.
This commit is contained in:
parent
9932b35a10
commit
3f9a365d36
21
xC.c
21
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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue