From f7548d6d28c313cf80e6f3ef89aed16a19815df1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 11:51:24 +0200 Subject: Adding upstream version 1:2.3.19.1+dfsg1. Signed-off-by: Daniel Baumann --- src/lib-mail/message-header-encode.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/lib-mail/message-header-encode.h (limited to 'src/lib-mail/message-header-encode.h') 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 -- cgit v1.2.3