summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-06-16 14:46:17 +0200
committerThomas Haller <thaller@redhat.com>2015-06-16 14:49:40 +0200
commit2790d9f2adec96a2655cf18b8a2f9ea2f41d6da6 (patch)
tree71e30b01b78e85a6258f752555b8571dda90679c
parent6a31dd35ae7a19836732c38e03b11fc3ec571b8a (diff)
downloadNetworkManager-2790d9f2adec96a2655cf18b8a2f9ea2f41d6da6.tar.gz
libnm: add _nm_utils_strv_cleanup() function
-rw-r--r--libnm-core/nm-core-internal.h5
-rw-r--r--libnm-core/nm-utils.c30
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)
{