On Sat, Feb 20, 2021 at 04:42:38PM +0000, Sidong Yang wrote:
> 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 <realwa...@gmail.com>
> > > ---
> > > 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');

Yeah effectively that, but inside fmt_end_value and removing it from
fmt_end. It's fixed in devel now with some comments updated as the plain
text and json are different.

Reply via email to