From f3ee629711783333005c41e21d66841268b80f70 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 10 Apr 2015 11:27:47 +0200 Subject: util: when unescaping C escape sequences support C++11 \u and \U unicode literals We simply recode them in utf8. --- src/test/test-util.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/test/test-util.c') diff --git a/src/test/test-util.c b/src/test/test-util.c index f1403fa393..7af41bcb18 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -416,11 +416,10 @@ static void test_cescape(void) { static void test_cunescape(void) { _cleanup_free_ char *unescaped; - const char *x = "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00"; assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", 0, &unescaped) < 0); assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", UNESCAPE_RELAX, &unescaped) >= 0); - assert_se(streq_ptr(unescaped, x)); + assert_se(streq_ptr(unescaped, "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00")); free(unescaped); unescaped = NULL; @@ -452,6 +451,12 @@ static void test_cunescape(void) { assert_se(cunescape("\\1", 0, &unescaped) < 0); assert_se(cunescape("\\1", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\1")); + free(unescaped); + unescaped = NULL; + + assert_se(cunescape("\\u0000", 0, &unescaped) < 0); + assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0); + assert_se(streq_ptr(unescaped, "ßßΠA")); } static void test_foreach_word(void) { -- cgit v1.2.3-54-g00ecf