[PATCH:xev 2/2] Use strncasecmp if available, instead of a tolower loop & strncmp
Alan Coopersmith
alan.coopersmith at oracle.com
Tue Jan 15 16:07:58 PST 2013
On 01/15/13 03:51 PM, Peter Hutterer wrote:
>> +#ifndef HAVE_STRNCASECMP
>> char *cp;
>>
>> for (cp = s; *cp; cp++) {
>> if (isascii (*cp) && isupper (*cp))
>> *cp = tolower (*cp);
>> }
>> +#define strncasecmp strncmp
>> +#endif
>>
>> - if (strncmp (s, "notuseful", len) == 0) return (NotUseful);
>> - if (strncmp (s, "whenmapped", len) == 0) return (WhenMapped);
>> - if (strncmp (s, "always", len) == 0) return (Always);
>> + if (strncasecmp (s, "notuseful", len) == 0) return (NotUseful);
>> + if (strncasecmp (s, "whenmapped", len) == 0) return (WhenMapped);
>> + if (strncasecmp (s, "always", len) == 0) return (Always);
>
> which systems do we support that don't have strncasecmp?
Good question - I remembered other Xorg configure scripts checking for it, but
I don't know why, and checking the Unix98 spec it was included there:
http://pubs.opengroup.org/onlinepubs/007908799/xsh/strcasecmp.html
so it should be in our supported baseline. Anyone know of any reason we can't
just assume strncasecmp and drop the #ifndef case above?
> the man page suggests uppercase spelling "-bs {NotUseful,WhenMapped,Always}"
> so this could break on those systems. maybe change the above to match the
> spelling in the man page?
How would it break? They'd use the old code that does tolower on the input
before comparison - if we require strncasecmp and drop support for them, then
we could uppercase with impunity.
--
-Alan Coopersmith- alan.coopersmith at oracle.com
Oracle Solaris Engineering - http://blogs.oracle.com/alanc
More information about the xorg-devel
mailing list