g_strncasecmp in glib
- From: Phil Schwan <pschwan cmu edu>
- To: gtk-devel-list redhat com
- Subject: g_strncasecmp in glib
- Date: Wed, 4 Nov 1998 17:43:26 -0500
Does anyone mind if I commit this patch? Is there some reason that
I'm not aware of that there's not already a g_strncasecmp?
-Phil
------------------------------------------------------------------
"In film you will find four basic story lines. Man versus man, man
versus nature, nature versus nature, and dog versus vampire."
- Steven Spielberg
diff -ru glib-old/configure.in glib/configure.in
--- glib-old/configure.in Mon Nov 2 02:04:36 1998
+++ glib/configure.in Wed Nov 4 17:33:59 1998
@@ -233,7 +233,7 @@
AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
# Check for some functions
-AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp)
+AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf strcasecmp strncasecmp)
# Check for sys_errlist
AC_MSG_CHECKING(for sys_errlist)
diff -ru glib-old/glib.h glib/glib.h
--- glib-old/glib.h Tue Nov 3 09:52:23 1998
+++ glib/glib.h Wed Nov 4 17:15:31 1998
@@ -1402,6 +1402,9 @@
gchar* g_strsignal (gint signum);
gint g_strcasecmp (const gchar *s1,
const gchar *s2);
+gint g_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ guint n);
void g_strdown (gchar *string);
void g_strup (gchar *string);
void g_strreverse (gchar *string);
diff -ru glib-old/gstrfuncs.c glib/gstrfuncs.c
--- glib-old/gstrfuncs.c Sat Oct 31 23:19:50 1998
+++ glib/gstrfuncs.c Wed Nov 4 17:40:05 1998
@@ -975,6 +975,38 @@
#endif
}
+gint
+g_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ guint n)
+{
+#ifdef HAVE_STRNCASECMP
+ return strncasecmp (s1, s2, n);
+#else
+ gint c1, c2;
+
+ g_return_val_if_fail (s1 != NULL, 0);
+ g_return_val_if_fail (s2 != NULL, 0);
+
+ while (n-- && *s1 && *s2)
+ {
+ /* According to A. Cox, some platforms have islower's that
+ * don't work right on non-uppercase
+ */
+ c1 = isupper ((guchar)*s1) ? tolower ((guchar)*s1) : *s1;
+ c2 = isupper ((guchar)*s2) ? tolower ((guchar)*s2) : *s2;
+ if (c1 != c2)
+ return (c1 - c2);
+ s1++; s2++;
+ }
+
+ if (n)
+ return (((gint)(guchar) *s1) - ((gint)(guchar) *s2));
+ else
+ return 0;
+#endif
+}
+
gchar*
g_strdelimit (gchar *string,
const gchar *delimiters,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]