From c8bf90363940bd89fa96865366b6fcaacbf64c5f Mon Sep 17 00:00:00 2001 From: Alex Larsson Date: Tue, 14 May 2002 18:49:50 +0000 Subject: [PATCH] New functions g_str_has_suffix and g_str_has_prefix. 2002-05-14 Alex Larsson * glib/gstrfuncs.c: * glib/gstrfuncs.h: New functions g_str_has_suffix and g_str_has_prefix. * tests/string-test.c: (main): Test the new functions. --- ChangeLog | 9 +++++++++ ChangeLog.pre-2-10 | 9 +++++++++ ChangeLog.pre-2-12 | 9 +++++++++ ChangeLog.pre-2-2 | 9 +++++++++ ChangeLog.pre-2-4 | 9 +++++++++ ChangeLog.pre-2-6 | 9 +++++++++ ChangeLog.pre-2-8 | 9 +++++++++ glib/gstrfuncs.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ glib/gstrfuncs.h | 5 +++++ tests/string-test.c | 16 +++++++++++++++ 10 files changed, 140 insertions(+) diff --git a/ChangeLog b/ChangeLog index 73bd956..21dc1b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 73bd956..21dc1b7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,12 @@ +2002-05-14 Alex Larsson + + * glib/gstrfuncs.c: + * glib/gstrfuncs.h: + New functions g_str_has_suffix and g_str_has_prefix. + + * tests/string-test.c: (main): + Test the new functions. + Mon May 13 23:20:00 2002 Owen Taylor * autogen.sh (have_gettext): Add a check for GNU gettext. diff --git a/glib/gstrfuncs.c b/glib/gstrfuncs.c index ba72664..6b5bbb1 100644 --- a/glib/gstrfuncs.c +++ b/glib/gstrfuncs.c @@ -2270,3 +2270,59 @@ g_strrstr_len (const gchar *haystack, } +/** + * g_str_has_suffix: + * @str: a nul-terminated string. + * @suffix: the nul-terminated suffix to look for. + * + * Looks whether the string @str ends with @suffix. + * + * Return value: TRUE if @str end with @suffix, FALSE otherwise. + **/ +gboolean +g_str_has_suffix (const gchar *str, + const gchar *suffix) +{ + int str_len; + int suffix_len; + + g_return_val_if_fail (str != NULL, FALSE); + g_return_val_if_fail (suffix != NULL, FALSE); + + str_len = strlen (str); + suffix_len = strlen (suffix); + + if (str_len < suffix_len) + return FALSE; + + return strcmp (str + str_len - suffix_len, suffix) == 0; +} + +/** + * g_str_has_prefix: + * @str: a nul-terminated string. + * @prefix: the nul-terminated prefix to look for. + * + * Looks whether the string @str begins with @prefix. + * + * Return value: TRUE if @str begins with @prefix, FALSE otherwise. + **/ +gboolean +g_str_has_prefix (const gchar *str, + const gchar *prefix) +{ + int str_len; + int prefix_len; + + g_return_val_if_fail (str != NULL, FALSE); + g_return_val_if_fail (prefix != NULL, FALSE); + + str_len = strlen (str); + prefix_len = strlen (prefix); + + if (str_len < prefix_len) + return FALSE; + + return strncmp (str, prefix, prefix_len) == 0; +} + diff --git a/glib/gstrfuncs.h b/glib/gstrfuncs.h index 0c4f59e..40c249a 100644 --- a/glib/gstrfuncs.h +++ b/glib/gstrfuncs.h @@ -116,6 +116,11 @@ gchar * g_strrstr_len (const gchar *haystack, gssize haystack_len, const gchar *needle); +gboolean g_str_has_suffix (const gchar *str, + const gchar *suffix); +gboolean g_str_has_prefix (const gchar *str, + const gchar *prefix); + /* String to/from double conversion functions */ gdouble g_strtod (const gchar *nptr, diff --git a/tests/string-test.c b/tests/string-test.c index 7ae3149..555d2e1 100644 --- a/tests/string-test.c +++ b/tests/string-test.c @@ -210,6 +210,22 @@ main (int argc, g_string_free (string1, TRUE); g_string_free (string2, TRUE); + g_assert (g_str_has_prefix("foobar", "gazonk") == FALSE); + g_assert (g_str_has_prefix("xyzzy", "xyzzy") == TRUE); + g_assert (g_str_has_prefix("xyzzy", "xy") == TRUE); + g_assert (g_str_has_prefix("xyzzy", "") == TRUE); + g_assert (g_str_has_prefix("xyz", "xyzzy") == FALSE); + g_assert (g_str_has_prefix("", "xyzzy") == FALSE); + g_assert (g_str_has_prefix("", "") == TRUE); + + g_assert (g_str_has_suffix("foobar", "gazonk") == FALSE); + g_assert (g_str_has_suffix("xyzzy", "xyzzy") == TRUE); + g_assert (g_str_has_suffix("xyzzy", "zy") == TRUE); + g_assert (g_str_has_suffix("xyzzy", "") == TRUE); + g_assert (g_str_has_suffix("zzy", "xyzzy") == FALSE); + g_assert (g_str_has_suffix("", "xyzzy") == FALSE); + g_assert (g_str_has_suffix("", "") == TRUE); + return 0; } -- 2.7.4