int
main ()
{
  /* configure should already have checked that the locale is supported.  */
  if (setlocale (LC_ALL, "") == NULL)
    return 1;

  ASSERT (mbscasecmp ("paragraph", "Paragraph") == 0);

  ASSERT (mbscasecmp ("paragrapH", "parAgRaph") == 0);

  ASSERT (mbscasecmp ("paragraph", "paraLyzed") < 0);
  ASSERT (mbscasecmp ("paraLyzed", "paragraph") > 0);

  ASSERT (mbscasecmp ("para", "paragraph") < 0);
  ASSERT (mbscasecmp ("paragraph", "para") > 0);

  /* The following tests shows how mbscasecmp() is different from
     strcasecmp().  */

  ASSERT (mbscasecmp ("\303\266zg\303\274r", "\303\226ZG\303\234R") == 0); /* özgür */
  ASSERT (mbscasecmp ("\303\226ZG\303\234R", "\303\266zg\303\274r") == 0); /* özgür */

  /* This test shows how strings of different size can compare equal.  */
  ASSERT (mbscasecmp ("turkish", "TURK\304\260SH") == 0);
  ASSERT (mbscasecmp ("TURK\304\260SH", "turkish") == 0);

  return 0;
}
示例#2
0
/* Set the footnote style based on the style identifier in STRING. */
int
set_footnote_style (char *string)
{
  if (mbscasecmp (string, "separate") == 0)
    footnote_style = separate_node;
  else if (mbscasecmp (string, "end") == 0)
    footnote_style = end_node;
  else
    return -1;

 return 0;
}
示例#3
0
/* compare two strings for equality, case-insensitive */
static bool
string_compare_ci (void const *data1, void const *data2)
{
  char const *p1 = data1;
  char const *p2 = data2;
  return mbscasecmp (p1, p2) == 0;
}
示例#4
0
static int
fnmatch_no_wildcards (char const *pattern, char const *f, int options)
{
  if (! (options & FNM_LEADING_DIR))
    return ((options & FNM_CASEFOLD)
            ? mbscasecmp (pattern, f)
            : strcmp (pattern, f));
  else if (! (options & FNM_CASEFOLD))
    {
      size_t patlen = strlen (pattern);
      int r = strncmp (pattern, f, patlen);
      if (! r)
        {
          r = f[patlen];
          if (r == '/')
            r = 0;
        }
      return r;
    }
  else
    {
      /* Walk through a copy of F, seeing whether P matches any prefix
         of F.

         FIXME: This is an O(N**2) algorithm; it should be O(N).
         Also, the copy should not be necessary.  However, fixing this
         will probably involve a change to the mbs* API.  */

      char *fcopy = xstrdup (f);
      char *p;
      int r;
      for (p = fcopy; ; *p++ = '/')
        {
          p = strchr (p, '/');
          if (p)
            *p = '\0';
          r = mbscasecmp (pattern, fcopy);
          if (!p || r <= 0)
            break;
        }
      free (fcopy);
      return r;
    }
}