On Fri, Feb 19, 2021 at 10:56:11PM +0100, David Sterba wrote:
> On Tue, Feb 16, 2021 at 04:28:40PM +0000, Sidong Yang wrote:
> > Remove a code that inserting new line in fmt_end() for text mode.
> > Old code made a failure in fstest btrfs/006.
> >
> > Signed-off-by: Sidong Yang <[email protected]>
> > ---
> > Hi, I've just read mail that Filipe written that some failure about fstest.
> > I'm worried about this patch makes other problem. So make it RFC. Thanks.
>
> I found the discussion under the device stats patch adding json, the
> added line was known and "hopefully not causing problems", but the
> fstests seem to notice.
>
> I think we can fix that by removing the fmt_end newline but we also need
> to update how the fmt_print is done for the text output. Ie. for json
> there are some strict rules for line continuations (",") but for the
> textual output, each line ended by "\n" right away, without delaying
> that to the next fmt_* call should work.
You mean that if this patch applied and the code prints device stats for
text format manually replaced to fmt_print(), there is no last new line
for text output? fmt_print() prints new line before print some value now.
I think that it should prints new line at the end of each fmt_print().
like below
diff --git a/common/format-output.c b/common/format-output.c
index f5b12548..9a9f5bf7 100644
--- a/common/format-output.c
+++ b/common/format-output.c
@@ -242,7 +239,6 @@ void fmt_print(struct format_ctx *fctx, const char* key,
...)
const bool print_colon = row->out_text[0];
int len;
- putchar('\n');
fmt_indent1(fctx->indent);
len = strlen(row->out_text);
@@ -312,6 +308,8 @@ void fmt_print(struct format_ctx *fctx, const char* key,
...)
}
fmt_end_value(fctx, row);
+ if (bconf.output_format == CMD_FORMAT_TEXT)
+ putchar('\n');
/* No newline here, the line is closed by next value or group end */
va_end(args);
}
Thanks,
Sidong