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