message-header-decode.h revision 345253fb28498b2e0a60f4a2a8644c65feee7e75
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen#ifndef __MESSAGE_HEADER_DECODE_H
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen#define __MESSAGE_HEADER_DECODE_H
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen/* Return FALSE if you wish to stop decoding. charset is NULL when it's not
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen RFC2047-encoded. */
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainentypedef bool message_header_decode_callback_t(const unsigned char *data,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen size_t size, const char *charset,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen void *context);
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen/* Decode RFC2047 encoded words. Call specified function for each
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen decoded block. */
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainenvoid message_header_decode(const unsigned char *data, size_t size,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen message_header_decode_callback_t *callback,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen void *context);
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen/* Append decoded RFC2047 header as UTF-8 to given buffer. If dtcase=TRUE,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen the header is appended through uni_utf8_to_decomposed_titlecase().
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen Returns TRUE if output changed in any way from input. */
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainenbool message_header_decode_utf8(const unsigned char *data, size_t size,
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen buffer_t *dest, bool dtcase);
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen#endif
5fb3f13537dffd15a31e997da133a721c0728af8Timo Sirainen