From cc28798aa7aae19b74f1892a2c29ffe4fe1cd88c Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Thu, 16 Apr 2020 16:58:18 -0400 Subject: Decode Q encoding --- decode.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'decode.c') diff --git a/decode.c b/decode.c index 654cf22..1645a66 100644 --- a/decode.c +++ b/decode.c @@ -85,11 +85,30 @@ static void convertCharset( iconv_close(conv); } +static void decodeQ(struct Buffer *dst, const char *src, size_t len) { + while (len) { + if (*src == '=') { + if (len < 3) break; + *bufferDest(dst, 1) = strtoul(&src[1], NULL, 16); + len -= 3; + src += 3; + } else { + *bufferDest(dst, 1) = (*src == '_' ? ' ' : *src); + len--; + src++; + } + } +} + static void decodeEncoding( struct Buffer *dst, const char *encoding, const char *src, size_t len ) { - // TODO - bufferCopy(dst, src, len); + if (!strcasecmp(encoding, "Q")) { + decodeQ(dst, src, len); + } else { + // TODO + bufferCopy(dst, src, len); + } } static void decode( -- cgit 1.4.1