strv: introduce strv_split_full() which optionally handle quotes
This commit is contained in:
+3
-3
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user