static void test_charset_is_utf8(void) { test_begin("charset_is_utf8"); test_assert(charset_is_utf8("AScII")); test_assert(charset_is_utf8("us-AScII")); test_assert(charset_is_utf8("uTF8")); test_assert(charset_is_utf8("uTF-8")); test_end(); }
static void parse_content_type(struct message_decoder_context *ctx, struct message_header_line *hdr) { struct rfc822_parser_context parser; const char *const *results; string_t *str; if (ctx->content_charset != NULL) return; rfc822_parser_init(&parser, hdr->full_value, hdr->full_value_len, NULL); rfc822_skip_lwsp(&parser); str = t_str_new(64); if (rfc822_parse_content_type(&parser, str) <= 0) return; rfc2231_parse(&parser, &results); for (; *results != NULL; results += 2) { if (strcasecmp(results[0], "charset") == 0) { ctx->content_charset = i_strdup(results[1]); ctx->charset_utf8 = charset_is_utf8(results[1]); break; } } }