Re: [PATCH v6 1/3] lib/vsprintf: Add support for printing V4L2 and DRM fourccs

From: Andy Shevchenko
Date: Tue Feb 09 2021 - 05:03:28 EST


On Tue, Feb 09, 2021 at 11:20:32AM +0200, Sakari Ailus wrote:
> On Mon, Feb 08, 2021 at 10:43:30PM +0200, Andy Shevchenko wrote:
> > On Mon, Feb 8, 2021 at 10:11 PM Sakari Ailus
> > <sakari.ailus@xxxxxxxxxxxxxxx> wrote:

...

> > > + %p4cc BG12 little-endian (0x32314742)
> >
> > This misses examples of the (strange) escaping cases and wiped
> > whitespaces to make sure everybody understands that 'D 12' will be the
> > same as 'D1 2' (side note: which I disagree on, perhaps something
> > should be added into documentation why).
>
> The spaces are expected to be at the end only. I can add such example if
> you like. There are no fourcc codes with spaces in the middle in neither
> V4L2 nor DRM, and I don't think the expectation is to have them either.

But then the code suggests otherwise. Perhaps we need to extract
skip_trailing_spaces() from strim() and use it here.

...

> > > +static noinline_for_stack
> > > +char *fourcc_string(char *buf, char *end, const u32 *fourcc,
> > > + struct printf_spec spec, const char *fmt)
> > > +{
> >
> > > + char output[sizeof("(xx)(xx)(xx)(xx) little-endian (0x01234567)")];
> >
> > Do we have any evidence / document / standard that the above format is
> > what people would find good? From existing practices (I consider other
> > printings elsewhere and users in this series) I find '(xx)' form for
> > hex numbers is weird. The standard practice is to use \xHH (without
> > parentheses).
>
> Earlier in the review it was proposed that special handling of codes below
> 32 should be added, which I did. Using the parentheses is apparently an
> existing practice elsewhere.

Where? \xHH is quite well established format for escaping. Never heard about
'(xx)' variant before this very series.

> Note that neither DRM nor V4L2 currently has such fourcc codes currently.

...

> > > + p = special_hex_number(p, output + sizeof(output) - 2, *fourcc,
> > > + sizeof(u32));
> >
> > This is perfectly one line (in this file we have even longer lines).
>
> Sure, you can do that, and I can then review your patch and point to the
> coding style documentation. :-)

Yes, you can. The problem is that we agreed with others to improve readability
by letting some lines to be longer, so the code can lie on one line rather be
broken on two or more.

--
With Best Regards,
Andy Shevchenko