From 2d64b73d963637554221b3784a4c7ed5da1cf999 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 22 May 2012 19:55:03 -0400 Subject: [PATCH] Add e_util_strdup_strip(). Duplicates an input string and strips off any leading or trailing whitespace. The resulting string is returned unless it is empty or NULL, in which case the function returns NULL. Useful in "set" functions for string properties. Helps avoid expressions like (str != NULL && *str != '\0'). --- .../libedataserver/libedataserver-sections.txt | 1 + libedataserver/e-data-server-util.c | 31 ++++++++++++++++++++++ libedataserver/e-data-server-util.h | 1 + 3 files changed, 33 insertions(+) diff --git a/docs/reference/libedataserver/libedataserver-sections.txt b/docs/reference/libedataserver/libedataserver-sections.txt index 9936e20..e666219 100644 --- a/docs/reference/libedataserver/libedataserver-sections.txt +++ b/docs/reference/libedataserver/libedataserver-sections.txt @@ -534,6 +534,7 @@ tm e_get_user_cache_dir e_get_user_config_dir e_get_user_data_dir +e_util_strdup_strip e_util_strstrcase e_util_unicode_get_utf8 e_util_utf8_strstrcase diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c index 0d7e891..37f2bf7 100644 --- a/libedataserver/e-data-server-util.c +++ b/libedataserver/e-data-server-util.c @@ -124,6 +124,37 @@ e_get_user_data_dir (void) } /** + * e_util_strdup_strip: + * @string: (allow-none): a string value, or %NULL + * + * Duplicates @string and strips off any leading or trailing whitespace. + * The resulting string is returned unless it is empty or %NULL, in which + * case the function returns %NULL. + * + * Free the returned string with g_free(). + * + * Returns: a newly-allocated, stripped copy of @string, or %NULL + * + * Since: 3.6 + **/ +gchar * +e_util_strdup_strip (const gchar *string) +{ + gchar *duplicate; + + duplicate = g_strdup (string); + if (duplicate != NULL) { + g_strstrip (duplicate); + if (*duplicate == '\0') { + g_free (duplicate); + duplicate = NULL; + } + } + + return duplicate; +} + +/** * e_util_strstrcase: * @haystack: The string to search in. * @needle: The string to search for. diff --git a/libedataserver/e-data-server-util.h b/libedataserver/e-data-server-util.h index 4deb2c9..f9ba9cb 100644 --- a/libedataserver/e-data-server-util.h +++ b/libedataserver/e-data-server-util.h @@ -33,6 +33,7 @@ const gchar * e_get_user_cache_dir (void); const gchar * e_get_user_config_dir (void); const gchar * e_get_user_data_dir (void); +gchar * e_util_strdup_strip (const gchar *string); gchar * e_util_strstrcase (const gchar *haystack, const gchar *needle); gchar * e_util_unicode_get_utf8 (const gchar *text, -- 2.7.4