/* Case-insensitive string comparison function.
- Copyright (C) 1998-1999, 2005-2007 Free Software Foundation, Inc.
+ Copyright (C) 1998-1999, 2005-2010 Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2007.
This program is free software: you can redistribute it and/or modify
#include <ctype.h>
-#if HAVE_MBRTOWC
-# include "mbuiter.h"
-#endif
+#include "mbuiter.h"
#define TOLOWER(Ch) (isupper (Ch) ? tolower (Ch) : (Ch))
/* Be careful not to look at the entire extent of STRING or PREFIX until
needed. This is useful because when two strings differ, the difference is
most often already in the very few first characters. */
-#if HAVE_MBRTOWC
if (MB_CUR_MAX > 1)
{
mbui_iterator_t iter1;
mbui_init (iter2, prefix);
while (mbui_avail (iter1) && mbui_avail (iter2))
- {
- int cmp = mb_casecmp (mbui_cur (iter1), mbui_cur (iter2));
+ {
+ int cmp = mb_casecmp (mbui_cur (iter1), mbui_cur (iter2));
- if (cmp != 0)
- return NULL;
+ if (cmp != 0)
+ return NULL;
- mbui_advance (iter1);
- mbui_advance (iter2);
- }
+ mbui_advance (iter1);
+ mbui_advance (iter2);
+ }
if (!mbui_avail (iter2))
- /* PREFIX equals STRING or is terminated before STRING. */
- return (char *) mbui_cur_ptr (iter1);
+ /* PREFIX equals STRING or is terminated before STRING. */
+ return (char *) mbui_cur_ptr (iter1);
else
- /* STRING terminated before PREFIX. */
- return NULL;
+ /* STRING terminated before PREFIX. */
+ return NULL;
}
else
-#endif
{
const unsigned char *p1 = (const unsigned char *) string;
const unsigned char *p2 = (const unsigned char *) prefix;
unsigned char c1, c2;
for (; ; p1++, p2++)
- {
- c1 = TOLOWER (*p1);
- c2 = TOLOWER (*p2);
+ {
+ c1 = TOLOWER (*p1);
+ c2 = TOLOWER (*p2);
- if (c2 == '\0' || c1 != c2)
- break;
- }
+ if (c2 == '\0' || c1 != c2)
+ break;
+ }
if (c2 == '\0')
- /* PREFIX equals STRING or is terminated before STRING. */
- return (char *) p1;
+ /* PREFIX equals STRING or is terminated before STRING. */
+ return (char *) p1;
else
- /* STRING terminated before PREFIX. */
- return NULL;
+ /* STRING terminated before PREFIX. */
+ return NULL;
}
}