Subject: [PATCH V2 2/8] string: fix strncmp function

From: [email-masked] (Daniel Mack)
Date: Wed, 18 Dec 2013 13:23:26 +0100

On 12/18/2013 01:15 PM, Russell King - ARM Linux wrote:
> On Wed, Dec 18, 2013 at 01:09:05PM +0100, Piotr Wilczek wrote:
>> Now function returns the number of characters that differ in the
>> compared strings.
> 
> I think this is a mistake.  You're defining a standard C function in
> a non-standard way.  For strcmp() and strncmp(), the C standard
> requires:
> 
> RETURN VALUE
>        The strcmp() and strncmp() functions return an integer less than, equal
>        to, or greater than zero if s1 (or the first n bytes thereof) is found,
>        respectively, to be less than, to match, or be greater than s2.
> 
> If you implement something different to that, don't call it strcmp() or
> strncmp() but something else, because you're not providing the correct
> functionality, and that will just confuse people and lead to bugs.

True.

> For instance, can you be sure that there aren't any uses of strncmp()
> which already test for less-than-zero etc?

In this case, yes. The code as it stands is very small, and users only
check for the return value of these functions to be 0.

But I wonder whether that patch is needed at all. At least the rest of
this series does not even seem to introduce new call sites of strcmp()
or strncmp() ...

Daniel