[utils] ignore initial separators when splitting on delimiter

This commit is contained in:
Al
2016-12-26 04:14:20 -05:00
parent 69506d01e0
commit 0284913aa7

View File

@@ -836,10 +836,11 @@ static cstring_array *cstring_array_split_options(char *str, const char *separat
char_array *array = char_array_new_size(strlen(str)); char_array *array = char_array_new_size(strlen(str));
bool last_was_separator = false; bool last_was_separator = false;
bool first_char = false;
while (*str) { while (*str) {
if ((separator_len == 1 && *str == separator[0]) || (memcmp(str, separator, separator_len) == 0)) { if ((separator_len == 1 && *str == separator[0]) || (memcmp(str, separator, separator_len) == 0)) {
if (!ignore_consecutive || !last_was_separator) { if (first_char && (!ignore_consecutive || !last_was_separator)) {
char_array_push(array, '\0'); char_array_push(array, '\0');
} }
str += separator_len; str += separator_len;
@@ -848,6 +849,7 @@ static cstring_array *cstring_array_split_options(char *str, const char *separat
char_array_push(array, *str); char_array_push(array, *str);
str++; str++;
last_was_separator = false; last_was_separator = false;
first_char = true;
} }
} }
char_array_push(array, '\0'); char_array_push(array, '\0');