From 861c24fd883fcb626ade4c729aba590af48d8d14 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Fri, 13 Mar 2009 21:37:35 +0000 Subject: [PATCH] * suport lower case hex digits too * return ? on error. * de-inline... --- libcitadel/lib/mime_parser.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libcitadel/lib/mime_parser.c b/libcitadel/lib/mime_parser.c index 76452935a..66f8c0c78 100644 --- a/libcitadel/lib/mime_parser.c +++ b/libcitadel/lib/mime_parser.c @@ -71,24 +71,32 @@ char *fixed_partnum(char *supplied_partnum) { } -inline unsigned int decode_hex(char *Source) +unsigned int decode_hex(char *Source) { int ret = 0; if (*Source < 'A') { ret += (*Source - '0'); } + else if (*Source > 'Z') { + ret += (*Source - 'a' + 10); + } else { ret += (*Source - 'A' + 10); } + ret = ret << 4; + if (*(Source + 1) < 'A') { ret += (*(Source + 1) - '0'); } + else if (*(Source + 1) > 'Z') { + ret += (*(Source + 1) - 'a' + 10); + } else { ret += (*(Source + 1) - 'A' + 10); } if (ret > 255) - return 0; + return '?'; return ret; } -- 2.30.2