On 06/25/2018 07:41 AM, Philippe Mathieu-Daudé wrote:
Do not match the IEC binary prefix as camelcase typedefs.
This fixes:
ERROR: "foo * bar" should be "foo *bar"
#310: FILE: hw/ppc/ppc440_uc.c:564:
+ size = 8 * MiB * sh;
total: 1 errors, 0 warnings, 433 lines checked
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
---
scripts/checkpatch.pl | 1 +
1 file changed, 1 insertion(+)
Warning - my perl regex-fu is weak; but I'll give this a shot.
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index e3d8c2cdfc..223681bfd0 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -242,6 +242,7 @@ our $UTF8 = qr{
# There are still some false positives, but this catches most
# common cases.
our $typeTypedefs = qr{(?x:
+ (?![KMGTPE]iB) # IEC binary prefix (do not match)
I had to (re-)read 'perldoc perlretut', but found what I was looking
for. You are adding a zero-length negated lookahead assertion that
anything matching the pattern [KMGTPE]iB is not matched to the rest of
the regex.
[A-Z][A-Z\d_]*[a-z][A-Za-z\d_]* # camelcase
| [A-Z][A-Z\d_]*AIOCB # all uppercase
| [A-Z][A-Z\d_]*CPU # all uppercase
and the rest of this regex is picking out any sequence that the code
should treat as a typedef. Ergo, with your negative lookahead, we are
no longer treating the numeric mixed-case constants as typedefs, and the
rest of the script that warns on formatting issues where a typedef
appears to be used with a '*' for creating a pointer no longer trigger.
Since that's enough to shut up the false positives you were seeing, then
it looks right to me.
Reviewed-by: Eric Blake <ebl...@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org