diff options
author | Thomas Haller <thaller@redhat.com> | 2015-06-16 14:46:17 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-06-16 14:49:40 +0200 |
commit | 2790d9f2adec96a2655cf18b8a2f9ea2f41d6da6 (patch) | |
tree | 71e30b01b78e85a6258f752555b8571dda90679c | |
parent | 6a31dd35ae7a19836732c38e03b11fc3ec571b8a (diff) | |
download | NetworkManager-2790d9f2adec96a2655cf18b8a2f9ea2f41d6da6.tar.gz |
libnm: add _nm_utils_strv_cleanup() function
-rw-r--r-- | libnm-core/nm-core-internal.h | 5 | ||||
-rw-r--r-- | libnm-core/nm-utils.c | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h index 76dc9355ca..8f421b0511 100644 --- a/libnm-core/nm-core-internal.h +++ b/libnm-core/nm-core-internal.h @@ -117,6 +117,11 @@ gboolean _nm_utils_string_in_list (const char *str, gssize _nm_utils_strv_find_first (char **list, gssize len, const char *needle); +char **_nm_utils_strv_cleanup (char **strv, + gboolean strip_whitespace, + gboolean skip_empty, + gboolean skip_repeated); + char ** _nm_utils_strsplit_set (const char *str, const char *delimiters, int max_tokens); diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 4a02c98c6e..40c1a8534b 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -483,6 +483,36 @@ _nm_utils_strv_find_first (char **list, gssize len, const char *needle) return -1; } +char ** +_nm_utils_strv_cleanup (char **strv, + gboolean strip_whitespace, + gboolean skip_empty, + gboolean skip_repeated) +{ + guint i, j; + + if (!strv || !*strv) + return strv; + + if (strip_whitespace) { + for (i = 0; strv[i]; i++) + g_strstrip (strv[i]); + } + if (!skip_empty && !skip_repeated) + return strv; + j = 0; + for (i = 0; strv[i]; i++) { + if ( (skip_empty && !*strv[i]) + || (skip_repeated && _nm_utils_strv_find_first (strv, j, strv[i]) >= 0)) + g_free (strv[i]); + else + strv[j++] = strv[i]; + } + strv[j] = NULL; + return strv; +} + + gboolean _nm_utils_string_slist_validate (GSList *list, const char **valid_values) { |