blob: fdd3b197d7d28a6471d2762866f626c56ac6dbdf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
|