From 31a5dcb93aee568fb6220af71a4792a2a3743fab Mon Sep 17 00:00:00 2001 From: gonzalo Date: Sun, 8 Oct 2006 04:09:43 +0000 Subject: [PATCH] 2006-10-08 Gonzalo Paniagua Javier * test/string-util.c: * TODO: * src/gstr.c: * src/glib.h: implemented g_strdelimit. git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mono@66393 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- eglib/ChangeLog | 7 +++++++ eglib/TODO | 1 - eglib/src/glib.h | 3 +++ eglib/src/gstr.c | 20 ++++++++++++++++++++ eglib/test/string-util.c | 19 +++++++++++++++++++ 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/eglib/ChangeLog b/eglib/ChangeLog index 2fb45f0ae..9bdcdde17 100644 --- a/eglib/ChangeLog +++ b/eglib/ChangeLog @@ -1,3 +1,10 @@ +2006-10-08 Gonzalo Paniagua Javier + + * test/string-util.c: + * TODO: + * src/gstr.c: + * src/glib.h: implemented g_strdelimit. + 2006-10-07 Gonzalo Paniagua Javier * test/spawn.c: add search path flag when running ls. diff --git a/eglib/TODO b/eglib/TODO index 5a1200c0f..b1c54826d 100644 --- a/eglib/TODO +++ b/eglib/TODO @@ -22,7 +22,6 @@ Important Groups: * String manipulation 1 g_filename_from_utf8 [LIMITATION: UTF8 only today] 10 g_strlcpy - 2 g_strdelimit 1 g_strescape * Miscelaneous diff --git a/eglib/src/glib.h b/eglib/src/glib.h index 861ee30a9..61c39657d 100644 --- a/eglib/src/glib.h +++ b/eglib/src/glib.h @@ -175,6 +175,7 @@ guint g_strv_length (gchar **str_array); gchar *g_strjoin (const gchar *separator, ...); gchar *g_strchug (gchar *str); gchar *g_strchomp (gchar *str); +gchar *g_strdelimit (gchar *string, const gchar *delimiters, gchar new_delimiter); gchar *g_filename_to_uri (const gchar *filename, const gchar *hostname, GError **error); gchar *g_filename_from_uri (const gchar *uri, gchar **hostname, GError **error); @@ -204,6 +205,8 @@ gint g_snprintf (gchar *string, gulong n, gchar const *format, .. #define g_strncasecmp strncasecmp #define g_strstrip(a) g_strchug (g_strchomp (a)) +#define G_STR_DELIMITERS "_-|> <." + /* * String type */ diff --git a/eglib/src/gstr.c b/eglib/src/gstr.c index 7e76dae65..04666da13 100644 --- a/eglib/src/gstr.c +++ b/eglib/src/gstr.c @@ -508,3 +508,23 @@ g_ascii_strdown (const gchar *str, gssize len) return ret; } + + +gchar * +g_strdelimit (gchar *string, const gchar *delimiters, gchar new_delimiter) +{ + gchar *ptr; + + g_return_val_if_fail (string != NULL, NULL); + + if (delimiters == NULL) + delimiters = G_STR_DELIMITERS; + + for (ptr = string; *ptr; ptr++) { + if (strchr (delimiters, *ptr)) + *ptr = new_delimiter; + } + + return string; +} + diff --git a/eglib/test/string-util.c b/eglib/test/string-util.c index 38fcf95f1..833e52a19 100644 --- a/eglib/test/string-util.c +++ b/eglib/test/string-util.c @@ -267,6 +267,24 @@ test_ascii_xdigit_value () return OK; } +RESULT +test_strdelimit () +{ + gchar *str; + + str = g_strdup (G_STR_DELIMITERS); + str = g_strdelimit (str, NULL, 'a'); + if (0 != strcmp ("aaaaaaa", str)) + return FAILED ("All delimiters: '%s'", str); + g_free (str); + str = g_strdup ("hola"); + str = g_strdelimit (str, "ha", '+'); + if (0 != strcmp ("+ol+", str)) + return FAILED ("2 delimiters: '%s'", str); + g_free (str); + return OK; +} + static Test strutil_tests [] = { {"g_strfreev", test_strfreev}, {"g_strconcat", test_concat}, @@ -279,6 +297,7 @@ static Test strutil_tests [] = { {"g_filename_to_uri", test_filename_to_uri}, {"g_filename_from_uri", test_filename_from_uri}, {"g_ascii_xdigit_value", test_ascii_xdigit_value}, + {"g_strdelimit", test_strdelimit}, {NULL, NULL} }; -- 2.11.4.GIT