/* Returns: 0 if the strings match, a negative value if @s1 < @s2, or a positive value if @s1 > @s2.  */
gint g_ascii_strcasecmp(const gchar *s1, const gchar *s2)
/* Returns: 0 if the strings match, a negative value if @s1 < @s2, or a positive value if @s1 > @s2.  */
gint g_ascii_strcasecmp(const gchar *s1, const gchar *s2)
{
  gint c1, c2;
  g_return_val_if_fail (s1 != NULL, 0);
  g_return_val_if_fail (s2 != NULL, 0);
  while (*s1 && *s2)
    {
      c1 = (gint)(guchar) TOLOWER (*s1);
      c2 = (gint)(guchar) TOLOWER (*s2);
      if (c1 != c2)
        return (c1 - c2);
      s1++; s2++;
    }
  return (((gint)(guchar) *s1) - ((gint)(guchar) *s2));
}