From d3b95b39e8e56275cea6e6e1cfd439c3bdbe9c35 Mon Sep 17 00:00:00 2001 From: Aaron Bockover Date: Sat, 5 May 2007 19:53:43 +0000 Subject: [PATCH] 2007-05-05 Aaron Bockover * src/gstr.c: * src/glib.h: Added g_ascii_tolower implementation; make g_ascii_strdown use it to do the transformation * test/string-util.c: Added a test for g_ascii_strdown svn path=/trunk/mono/; revision=76760 --- eglib/ChangeLog | 8 ++++++++ eglib/src/glib.h | 1 + eglib/src/gstr.c | 14 ++++++++------ eglib/test/string-util.c | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/eglib/ChangeLog b/eglib/ChangeLog index fe6a1673d49..8a36dbad08d 100644 --- a/eglib/ChangeLog +++ b/eglib/ChangeLog @@ -1,3 +1,11 @@ +2007-05-05 Aaron Bockover + + * src/gstr.c: + * src/glib.h: Added g_ascii_tolower implementation; make g_ascii_strdown + use it to do the transformation + + * test/string-util.c: Added a test for g_ascii_strdown + 2007-04-27 Jonathan Chambers * src/gstr.c: Fix off by one error in g_strdup allocation. diff --git a/eglib/src/glib.h b/eglib/src/glib.h index 137a406f2c7..0c98d729dff 100644 --- a/eglib/src/glib.h +++ b/eglib/src/glib.h @@ -236,6 +236,7 @@ gint g_snprintf (gchar *string, gulong n, gchar const *format, .. gsize g_strlcpy (gchar *dest, const gchar *src, gsize dest_size); +gchar g_ascii_tolower (gchar c); gchar *g_ascii_strdown (const gchar *str, gssize len); gint g_ascii_strncasecmp (const gchar *s1, const gchar *s2, gsize n); gint g_ascii_xdigit_value (gchar c); diff --git a/eglib/src/gstr.c b/eglib/src/gstr.c index 3990eadc1da..1cb922a35c5 100644 --- a/eglib/src/gstr.c +++ b/eglib/src/gstr.c @@ -539,6 +539,12 @@ g_strdown (gchar *string) } } +gchar +g_ascii_tolower (gchar c) +{ + return c >= 'A' && c <= 'Z' ? c + ('a' - 'A') : c; +} + gchar * g_ascii_strdown (const gchar *str, gssize len) { @@ -551,12 +557,8 @@ g_ascii_strdown (const gchar *str, gssize len) len = strlen (str); ret = g_malloc (len + 1); - for (i = 0; i < len; i++){ - guchar c = (guchar) str [i]; - if (c >= 'A' && c <= 'Z') - c += 'a' - 'A'; - ret [i] = c; - } + for (i = 0; i < len; i++) + ret [i] = (guchar) g_ascii_tolower (str [i]); ret [i] = 0; return ret; diff --git a/eglib/test/string-util.c b/eglib/test/string-util.c index c599f23694f..12050bd57d9 100644 --- a/eglib/test/string-util.c +++ b/eglib/test/string-util.c @@ -400,6 +400,27 @@ test_ascii_strncasecmp () return OK; } +RESULT +test_ascii_strdown () +{ + const gchar *a = "~09+AaBcDeFzZ$0909EmPAbCdEEEEEZZZZAAA"; + const gchar *b = "~09+aabcdefzz$0909empabcdeeeeezzzzaaa"; + gchar *c; + gint n, l; + + l = strlen (b); + c = g_ascii_strdown (a, l); + n = g_ascii_strncasecmp (b, c, l); + + if (n != 0) { + g_free (c); + return FAILED ("Should have been 0, got %d", n); + } + + g_free (c); + return OK; +} + static Test strutil_tests [] = { {"g_strfreev", test_strfreev}, {"g_strconcat", test_concat}, @@ -416,6 +437,7 @@ static Test strutil_tests [] = { {"g_strlcpy", test_strlcpy}, {"g_strescape", test_strescape}, {"g_ascii_strncasecmp", test_ascii_strncasecmp }, + {"g_ascii_strdown", test_ascii_strdown }, {NULL, NULL} }; -- 2.25.1