c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#ifndef MESSAGE_HEADER_DECODE_H
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#define MESSAGE_HEADER_DECODE_H
847aeef259d42e2f14cf126699e28291e6e1fb53Timo Sirainen
d9076f5939edf5d20a261494b1a861dcbb0d32e2Timo Sirainen#include "unichar.h"
d9076f5939edf5d20a261494b1a861dcbb0d32e2Timo 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
d9076f5939edf5d20a261494b1a861dcbb0d32e2Timo Sirainen/* Append decoded RFC2047 header as UTF-8 to given buffer. */
82d3a1d1594ed93d04d7bf999027b3e5104de6e4Timo Sirainenvoid message_header_decode_utf8(const unsigned char *data, size_t size,
d9076f5939edf5d20a261494b1a861dcbb0d32e2Timo Sirainen buffer_t *dest, normalizer_func_t *normalizer);
72388282bf6718c39af34cfcf51438910f9d62daTimo Sirainen
847aeef259d42e2f14cf126699e28291e6e1fb53Timo Sirainen#endif