Mercurial > dovecot > core-2.2
diff src/lib-charset/charset-utf8.h @ 608:debb8468514e HEAD
SEARCH CHARSET now works properly with message bodies, and in general body
searching works more correctly by decoding base64/qp data. Non-text MIME
parts are currently not included in search, that could be made optional.
Also the body is parsed separately for each keyword, that could be
optimized.
Changed base64_decode() behaviour so that it can accept non-base64 data as
well, ie. line feeds etc.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 13 Nov 2002 13:08:18 +0200 |
parents | f2aa58c2afd0 |
children | 553f050c8313 |
line wrap: on
line diff
--- a/src/lib-charset/charset-utf8.h Wed Nov 13 13:01:11 2002 +0200 +++ b/src/lib-charset/charset-utf8.h Wed Nov 13 13:08:18 2002 +0200 @@ -1,7 +1,28 @@ #ifndef __CHARSET_UTF8_H #define __CHARSET_UTF8_H -const char *charset_to_ucase_utf8(const unsigned char *data, size_t *size, - const char *charset, int *unknown_charset); +typedef struct _CharsetTranslation CharsetTranslation; + +/* Begin translation to UTF-8. */ +CharsetTranslation *charset_to_utf8_begin(const char *charset, + int *unknown_charset); + +void charset_to_utf8_end(CharsetTranslation *t); + +void charset_to_utf8_reset(CharsetTranslation *t); + +/* Convert inbuf to UTF-8. inbuf and inbuf_size is updated to specify beginning + of data that was not written to outbuf, either because of inbuf ended with + incomplete character sequence or because the outbuf got full. Returns TRUE + if no conversion errors were detected. */ +int charset_to_ucase_utf8(CharsetTranslation *t, + const unsigned char **inbuf, size_t *insize, + unsigned char *outbuf, size_t *outsize); + +/* Simple wrapper for above functions. size is updated to strlen() of + returned UTF-8 string. */ +const char * +charset_to_ucase_utf8_string(const char *charset, int *unknown_charset, + const unsigned char *buf, size_t *size); #endif