From: Timo Sirainen Date: Fri, 6 May 2016 14:24:42 +0000 (+0300) Subject: lib: Added t_str_tabunescape() X-Git-Tag: 2.3.0.rc1~3831 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ea49f0ffe92ac0d709ac9282e136a94df0053ee;p=thirdparty%2Fdovecot%2Fcore.git lib: Added t_str_tabunescape() --- diff --git a/src/lib/strescape.c b/src/lib/strescape.c index 065a50910b..75641c21e3 100644 --- a/src/lib/strescape.c +++ b/src/lib/strescape.c @@ -226,6 +226,14 @@ char *str_tabunescape(char *str) return start; } +const char *t_str_tabunescape(const char *str) +{ + if (strchr(str, '\001') == NULL) + return str; + else + return str_tabunescape(t_strdup_noconst(str)); +} + char **p_strsplit_tabescaped(pool_t pool, const char *str) { char **args; diff --git a/src/lib/strescape.h b/src/lib/strescape.h index 9569b94fd4..550e3adfac 100644 --- a/src/lib/strescape.h +++ b/src/lib/strescape.h @@ -23,6 +23,7 @@ const char *str_tabescape(const char *str); void str_append_tabescaped(string_t *dest, const char *src); void str_append_tabunescaped(string_t *dest, const void *src, size_t src_size); char *str_tabunescape(char *str); +const char *t_str_tabunescape(const char *str); char **p_strsplit_tabescaped(pool_t pool, const char *str); const char *const *t_strsplit_tabescaped(const char *str); diff --git a/src/lib/test-strescape.c b/src/lib/test-strescape.c index c4c5c3905a..4272cae3b2 100644 --- a/src/lib/test-strescape.c +++ b/src/lib/test-strescape.c @@ -70,6 +70,8 @@ void test_strescape(void) test_begin("str_tabescape"); for (i = 0; i < N_ELEMENTS(tabesc); i++) { + test_assert(strcmp(t_str_tabunescape(tabesc[i].output), + tabesc[i].input) == 0); test_assert(strcmp(str_tabunescape(t_strdup_noconst(tabesc[i].output)), tabesc[i].input) == 0); test_assert(strcmp(str_tabescape(tabesc[i].input),