]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
strv: introduce strv_split_full() which optionally handle quotes
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 26 Sep 2018 10:17:51 +0000 (19:17 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 26 Sep 2018 10:17:51 +0000 (19:17 +0900)
src/basic/strv.c
src/basic/strv.h

index dc72f036ac90343943def1c98bf338855d1482b8..ffc7b98d702e8a1ed3312d782a933c0bbca48be6 100644 (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);
index 34a660cb920037286fa24135de772655bc943e1d..03fb5cc2b2488d82373f3efe3ccea403548f7f56 100644 (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);