strv: rework strv_split_quoted() to use unquote_first_word()

This should make the unquoting scheme a bit less naive.
This commit is contained in:
Lennart Poettering
2014-11-10 23:45:12 +01:00
parent 27e9c5af81
commit f88e6be5ee
6 changed files with 48 additions and 46 deletions
+6 -6
View File
@@ -165,7 +165,7 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
assert_se(p);
assert_se(streq(p, quoted));
r = strv_split_quoted(&s, quoted);
r = strv_split_quoted(&s, quoted, false);
assert_se(r == 0);
assert_se(s);
STRV_FOREACH(t, s) {
@@ -182,7 +182,7 @@ static void test_strv_unquote(const char *quoted, const char **list) {
char **t;
int r;
r = strv_split_quoted(&s, quoted);
r = strv_split_quoted(&s, quoted, false);
assert_se(r == 0);
assert_se(s);
j = strv_join(s, " | ");
@@ -199,7 +199,7 @@ static void test_invalid_unquote(const char *quoted) {
char **s = NULL;
int r;
r = strv_split_quoted(&s, quoted);
r = strv_split_quoted(&s, quoted, false);
assert_se(s == NULL);
assert_se(r == -EINVAL);
}
@@ -482,12 +482,12 @@ int main(int argc, char *argv[]) {
test_strv_unquote(" \"x'\" ", (const char*[]) { "x'", NULL });
test_strv_unquote("a '--b=c \"d e\"'", (const char*[]) { "a", "--b=c \"d e\"", NULL });
test_invalid_unquote("a --b='c \"d e\"'");
test_invalid_unquote("a --b='c \"d e\" '");
test_invalid_unquote("a --b='c \"d e\"''");
test_invalid_unquote("a --b='c \"d e\" '\"");
test_invalid_unquote("a --b='c \"d e\"garbage");
test_invalid_unquote("'");
test_invalid_unquote("\"");
test_invalid_unquote("'x'y");
test_invalid_unquote("'x'y'g");
test_strv_split();
test_strv_split_newlines();