strv: introduce strv_split_full() which optionally handle quotes

This commit is contained in:
Yu Watanabe
2018-09-26 19:17:51 +09:00
parent 0fbc35524c
commit af0b60b37c
2 changed files with 7 additions and 4 deletions
+3 -3
View File
@@ -245,7 +245,7 @@ int strv_extend_strv_concat(char ***a, char **b, const char *suffix) {
return 0;
}
char **strv_split(const char *s, const char *separator) {
char **strv_split_full(const char *s, const char *separator, bool quoted) {
const char *word, *state;
size_t l;
size_t n, i;
@@ -258,7 +258,7 @@ char **strv_split(const char *s, const char *separator) {
return new0(char*, 1);
n = 0;
FOREACH_WORD_SEPARATOR(word, l, s, separator, state)
_FOREACH_WORD(word, l, s, separator, quoted, state)
n++;
r = new(char*, n+1);
@@ -266,7 +266,7 @@ char **strv_split(const char *s, const char *separator) {
return NULL;
i = 0;
FOREACH_WORD_SEPARATOR(word, l, s, separator, state) {
_FOREACH_WORD(word, l, s, separator, quoted, state) {
r[i] = strndup(word, l);
if (!r[i]) {
strv_free(r);
+4 -1
View File
@@ -66,7 +66,10 @@ static inline bool strv_isempty(char * const *l) {
return !l || !*l;
}
char **strv_split(const char *s, const char *separator);
char **strv_split_full(const char *s, const char *separator, bool quoted);
static inline char **strv_split(const char *s, const char *separator) {
return strv_split_full(s, separator, false);
}
char **strv_split_newlines(const char *s);
int strv_split_extract(char ***t, const char *s, const char *separators, ExtractFlags flags);