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 <br...@clisp.org> mbspcasecmp: Fix function specification. * lib/string.in.h (mbspcasecmp): Fix specification comment. * lib/mbspcasecmp.c (mbspcasecmp): Likewise. Reported by Eric Blake <ebl...@redhat.com>. --- 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 <br...@clisp.org>, 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) {