RE: Use of '%#02x' is almost always wrong

From: David Laight
Date: Thu Oct 14 2021 - 04:27:24 EST


From: Bernd Petrovitsch
> Sent: 14 October 2021 00:16
>
> On 12/10/2021 23:10, David Laight wrote:
> [...]
> >> So presumably all the uses of %#02x in the kernel are not outputting
> >> what is actually expected. Perhaps all of these should use %#04x.
> >
> > Doesn't help. The definition of "%#x" is completely broken.
>
> Seconded ...
>
> > Basically 0 doesn't get the "0x" prefix, so "%#04x" outputs
> > "0000".
>
> ... just because of that.
> And if one get's in touch with tools where format strings are
> the % -stuff is not consistently used ...
>
> > "0000" if the value is zero.
> > So the correct replacement is (probably) "0x%02x".
>
> At least it's consistent that way.
>
> And in the big techie picture, I don't see what the '#' modifer
> buys and why it makes sense to use it.

It works for "%#8x" where it add the "0x" to the right-aligned
hex digits.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)