bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mbspcasecmp comment bug


From: Bruno Haible
Subject: Re: mbspcasecmp comment bug
Date: Wed, 28 Jul 2010 00:55:16 +0200
User-agent: KMail/1.9.9

Hi Eric,

> I just noticed that the comments for mbspcasecmp are wrong:
> 
> /* Compare the initial segment of the character string STRING consisting of
>     at most mbslen (PREFIX) characters with the character string PREFIX,
>     ignoring case, returning less than, equal to or greater than zero if this
>     initial segment is lexicographically less than, equal to or greater than
>     PREFIX.
>     Note: This function may, in multibyte locales, return 0 if STRING is of
>     smaller length than PREFIX!  */
> char *
> mbspcasecmp (const char *string, const char *prefix)
> 
> If I'm reading the code currectly, the actual result is NULL if no 
> match, or a pointer into string corresponding to the next byte after the 
> end of matched prefix.

You're right, of course. Fixed as follows:


2010-07-27  Bruno Haible  <address@hidden>

        mbspcasecmp: Fix function specification.
        * lib/string.in.h (mbspcasecmp): Fix specification comment.
        * lib/mbspcasecmp.c (mbspcasecmp): Likewise.
        Reported by Eric Blake <address@hidden>.

--- lib/string.in.h.orig        Wed Jul 28 00:50:02 2010
+++ lib/string.in.h     Wed Jul 28 00:48:26 2010
@@ -770,11 +770,10 @@
 #if @GNULIB_MBSPCASECMP@
 /* Compare the initial segment of the character string STRING consisting of
    at most mbslen (PREFIX) characters with the character string PREFIX,
-   ignoring case, returning less than, equal to or greater than zero if this
-   initial segment is lexicographically less than, equal to or greater than
-   PREFIX.
-   Note: This function may, in multibyte locales, return 0 if STRING is of
-   smaller length than PREFIX!
+   ignoring case.  If the two match, return a pointer to the first byte
+   after this prefix in STRING.  Otherwise, return NULL.
+   Note: This function may, in multibyte locales, return non-NULL if STRING
+   is of smaller length than PREFIX!
    Unlike strncasecmp(), this function works correctly in multibyte
    locales.  */
 _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
--- lib/mbspcasecmp.c.orig      Wed Jul 28 00:50:02 2010
+++ lib/mbspcasecmp.c   Wed Jul 28 00:49:04 2010
@@ -1,5 +1,5 @@
 /* Case-insensitive string comparison function.
-   Copyright (C) 1998-1999, 2005-2010 Free Software Foundation, Inc.
+   Copyright (C) 1998-1999, 2005-2008, 2010 Free Software Foundation, Inc.
    Written by Bruno Haible <address@hidden>, 2007.
 
    This program is free software: you can redistribute it and/or modify
@@ -28,11 +28,10 @@
 
 /* Compare the initial segment of the character string STRING consisting of
    at most mbslen (PREFIX) characters with the character string PREFIX,
-   ignoring case, returning less than, equal to or greater than zero if this
-   initial segment is lexicographically less than, equal to or greater than
-   PREFIX.
-   Note: This function may, in multibyte locales, return 0 if STRING is of
-   smaller length than PREFIX!  */
+   ignoring case.  If the two match, return a pointer to the first byte
+   after this prefix in STRING.  Otherwise, return NULL.
+   Note: This function may, in multibyte locales, return non-NULL if STRING
+   is of smaller length than PREFIX!  */
 char *
 mbspcasecmp (const char *string, const char *prefix)
 {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]