On 09/24/2013 07:33 AM, Laszlo Ersek wrote: >> >> I suspect that forbidding const.*Ptr in "make syntax-check" wouldn't be >> a bad idea. > > The pattern should probably require some whitespace in the middle as > well, if constWhateverPtr typedefs are to be accepted as valid. Here's the proposed syntax check: diff --git i/cfg.mk w/cfg.mk index dad8a90..6a17d43 100644 --- i/cfg.mk +++ w/cfg.mk @@ -468,6 +468,14 @@ sc_correct_id_types: halt="use pid_t for pid, uid_t for uid, gid_t for gid" \ $(_sc_search_regexp) +# 'const fooPtr a' is the same as 'foo * const a', even though it is +# usually desired to have 'foo const *a'. It's easier to just prevent +# the confusing mix of typedef vs. const placement. +sc_forbid_const_pointer_typedef: + @prohibit='const [a-zA-Z_0-9]*Ptr' \ + halt="'const fooPtr var' does not declare what you meant" \ + $(_sc_search_regexp) + # Forbid sizeof foo or sizeof (foo), require sizeof(foo) sc_size_of_brackets: @prohibit='sizeof\s' \ and here's the damage we'd have to clean up: $ make sc_forbid_const_pointer_typedef | wc maint.mk: 'const fooPtr var' does not declare what you meant make: *** [sc_forbid_const_pointer_typedef] Error 1 403 1766 37136 spread among 75 files. There's probably some fallout, too - once you have a const-correct pointer type, it might show us places where we have been assigning through what we thought was const. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list