libnm: add _nm_utils_strv_cleanup() function

This commit is contained in:
Thomas Haller 2015-06-16 14:46:17 +02:00
parent 69f2d22bfe
commit 885d187d23
2 changed files with 35 additions and 0 deletions

View file

@ -121,6 +121,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);

View file

@ -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)
{