diff options
Diffstat (limited to '')
-rw-r--r-- | src/lib-mail/message-header-encode.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/lib-mail/message-header-encode.h b/src/lib-mail/message-header-encode.h new file mode 100644 index 0000000..fdd3b19 --- /dev/null +++ b/src/lib-mail/message-header-encode.h @@ -0,0 +1,27 @@ +#ifndef MESSAGE_HEADER_ENCODE_H +#define MESSAGE_HEADER_ENCODE_H + +/* Encode UTF-8 input into output wherever necessary using either Q or B + encoding depending on which takes less space (approximately). The encoded + output is split into multiple lines if necessary (max 76 chars/line). + Existing folding whitespace is preserved. Bare [CR]LF will be preserved by + adding a TAB after it to make it a valid folding whitespace. All the control + characters are encoded, including NUL, CR and LF. Sequences of one or more + invalid UTF-8 characters are replaced by a single Unicode replacement + character (U+fffd). */ +void message_header_encode(const char *input, string_t *output); +void message_header_encode_data(const unsigned char *input, size_t len, + string_t *output); + +/* Encode the whole UTF-8 input using "Q" or "B" encoding into output. + The output is split into multiple lines if necessary (max 76 chars/line). + The first line's length is given as parameter. All the control characters + are encoded, including NUL, CR and LF. Sequences of one or more invalid UTF-8 + characters are replaced by a single Unicode replacement character (U+fffd). + */ +void message_header_encode_q(const unsigned char *input, size_t len, + string_t *output, size_t first_line_len); +void message_header_encode_b(const unsigned char *input, size_t len, + string_t *output, size_t first_line_len); + +#endif |