On Tue, 2017-01-10 at 02:59 +0300, Alexey Dobriyan wrote: > %Z is going to be removed in favour of %z. > > Signed-off-by: Alexey Dobriyan <[email protected]> > --- > > scripts/checkpatch.pl | 6 ++++++ > 1 file changed, 6 insertions(+) > > --- a/scripts/checkpatch.pl > +++ b/scripts/checkpatch.pl > @@ -5189,6 +5189,12 @@ sub process { > "\%Ld/%Lu are not-standard C, use > %lld/%llu\n" . $herecurr); > last; > } > + # check for %Z > + if ($string =~ /(?<!%)%[\*\d\.\$]*Z[diouxX]/) { > + WARN("PRINTF_Z", > + "%Z is non-standard C, use %z\n" . > $herecurr); > + last; > + } > if ($string =~ /0x%[\*\d\.\$\Llzth]*[udi]/) { > ERROR("PRINTF_0xDECIMAL", > "Prefixing 0x with decimal output is > defective\n" . $herecurr);
Right concept, slightly incorrect implementation. diouxX isn't necessary, ?<!% isn't necessary either as there's a s/%%/__/g above it, last; probably isn't a good idea as a single string could have both %Lu and %Zu and unrelated, thanks for reminding me, I knew but forgot to fix, the PRINTF_0xDECIMAL is defective as there's a requirement that the match string only use upper case.

