[libvirt] PATCH: Remove use of strcmp, etc

Jim Meyering jim at meyering.net
Fri May 9 22:07:56 UTC 2008


"Daniel P. Berrange" <berrange at redhat.com> wrote:

> On Fri, May 09, 2008 at 10:42:08PM +0100, Daniel P. Berrange wrote:
>> On Fri, May 09, 2008 at 11:40:39PM +0200, Jim Meyering wrote:
>> > "Daniel P. Berrange" <berrange at redhat.com> wrote:
>> >
>> > > This patch removes all use of strcmp, strncmp, strcasecmp and strncasecmp
>> > > in favour of the equality macros we have defined in internal.h, eg STREQ,
>> > > STRNEQ, STRNEQLEN, STREQLEN, etc, etc
>> >
>> > Nice.  With that, you can remove sc_prohibit_strcmp
>> > from the list of disabled checks in Makefile.cfg.
>> > You might want to extend the corresponding regexp in Makefile.maint
>> > to prohibit the other completely excluded functions like strncmp.
>> >
>> > BTW, did you make this change automatically?  or do a binary before/after
>> > comparison.  In which case there's not much point in reviewing the details...
>>
>> No I did it manually & checked with inspection. Could try a binary diff
>> with & without the patch if you want...
>
> Actually a binary diff won't work because of places where I changed
> from strncmp to  STRPREFIX - the latter includes a calls to strlen
> instead of hardcoding the constant

To check, so far I've converted all strcmp uses with these:

git grep -l '!strcmp *('|xargs perl -pi -e 's/!strcmp( *)\(/STREQ$1(/g'
git grep -l 'strcmp *([^=]*== *0'|xargs perl -pi -e 's/\bstrcmp( *\(.*?\)) *== *0/STREQ$1/'
git grep -l 'strcmp *([^=]*!= *0'|xargs perl -pi -e 's/\bstrcmp( *\(.*?\)) *!= *0/STRNEQ$1/g'

git grep -l '!(strcmp *('|xargs perl -pi -e 's/!\(strcmp( *\(.*?\))\)/STREQ$1/'

git grep -l 'strcmp *('|xargs perl -pi -e 's/\bstrcmp( *\()/STRNEQ$1/g'

Next (later ;-) is to convert strncmp uses and compare with yours.




More information about the libvir-list mailing list