diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c index b7ae2ed1cd..34cfb36a4a 100644 --- a/src/basic/extract-word.c +++ b/src/basic/extract-word.c @@ -28,8 +28,6 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra assert(p); assert(ret); - /* Those two don't make sense together. */ - assert(!FLAGS_SET(flags, EXTRACT_UNQUOTE|EXTRACT_RETAIN_ESCAPE)); /* Bail early if called after last value or with no input */ if (!*p) diff --git a/src/libsystemd-network/network-internal.c b/src/libsystemd-network/network-internal.c index f18ec88300..1f2e5c7e65 100644 --- a/src/libsystemd-network/network-internal.c +++ b/src/libsystemd-network/network-internal.c @@ -254,7 +254,7 @@ int config_parse_match_strv( for (;;) { _cleanup_free_ char *word = NULL, *k = NULL; - r = extract_first_word(&p, &word, NULL, EXTRACT_UNQUOTE); + r = extract_first_word(&p, &word, NULL, EXTRACT_UNQUOTE|EXTRACT_RETAIN_ESCAPE); if (r == 0) return 0; if (r == -ENOMEM) diff --git a/src/network/test-networkd-conf.c b/src/network/test-networkd-conf.c index 6883cbe1ec..2007acb781 100644 --- a/src/network/test-networkd-conf.c +++ b/src/network/test-networkd-conf.c @@ -240,7 +240,7 @@ static void test_config_parse_match_strv(void) { "!baz", "KEY=val", "KEY2=val with space", - "KEY3=val with \"quotation\""))); + "KEY3=val with \\quotation\\"))); } int main(int argc, char **argv) { diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index a495c2538b..40792086da 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -760,7 +760,7 @@ int config_parse_strv( for (;;) { char *word = NULL; - r = extract_first_word(&rvalue, &word, NULL, EXTRACT_UNQUOTE); + r = extract_first_word(&rvalue, &word, NULL, EXTRACT_UNQUOTE|EXTRACT_RETAIN_ESCAPE); if (r == 0) break; if (r == -ENOMEM)