const char **t_strsplit(const char *data, const char *separators)
ATTR_MALLOC ATTR_RETURNS_NONNULL;
/* like p_strsplit(), but treats multiple adjacent separators as a single
- separator. */
+ separator. separators at the beginning or at the end of the string are also
+ ignored, so it's not possible for the result to have any empty strings. */
char **p_strsplit_spaces(pool_t pool, const char *data, const char *separators)
ATTR_MALLOC ATTR_RETURNS_NONNULL;
const char **t_strsplit_spaces(const char *data, const char *separators)
}
strsplit_verify(buf);
}
+}
+
+static void test_t_strsplit_spaces(void)
+{
+ const char *const *args;
+
+ test_begin("t_strsplit_spaces");
+ /* empty strings */
+ args = t_strsplit_spaces("", "\n");
+ test_assert(args[0] == NULL);
+ args = t_strsplit_spaces("\n", "\n");
+ test_assert(args[0] == NULL);
+ args = t_strsplit_spaces("\n\n", "\n");
+ test_assert(args[0] == NULL);
+
+ /* multiple separators */
+ args = t_strsplit_spaces(" , , ,str1 , ,,, , str2 , ", " ,");
+ test_assert(strcmp(args[0], "str1") == 0);
+ test_assert(strcmp(args[1], "str2") == 0);
+ test_assert(args[2] == NULL);
test_end();
}
test_p_strarray_dup();
test_t_strsplit();
test_t_strsplit_tab();
+ test_t_strsplit_spaces();
test_t_str_replace();
/*test_t_str_trim();*/
test_t_str_ltrim();