diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 17:36:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 17:36:47 +0000 |
commit | 0441d265f2bb9da249c7abf333f0f771fadb4ab5 (patch) | |
tree | 3f3789daa2f6db22da6e55e92bee0062a7d613fe /src/lib-mail/istream-attachment-connector.h | |
parent | Initial commit. (diff) | |
download | dovecot-0441d265f2bb9da249c7abf333f0f771fadb4ab5.tar.xz dovecot-0441d265f2bb9da249c7abf333f0f771fadb4ab5.zip |
Adding upstream version 1:2.3.21+dfsg1.upstream/1%2.3.21+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/lib-mail/istream-attachment-connector.h')
-rw-r--r-- | src/lib-mail/istream-attachment-connector.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lib-mail/istream-attachment-connector.h b/src/lib-mail/istream-attachment-connector.h new file mode 100644 index 0000000..df829cd --- /dev/null +++ b/src/lib-mail/istream-attachment-connector.h @@ -0,0 +1,28 @@ +#ifndef ISTREAM_ATTACHMENT_CONNECTOR_H +#define ISTREAM_ATTACHMENT_CONNECTOR_H + +/* Start building a message stream. The base_input contains the message + without attachments. The final stream must be exactly msg_size bytes. + If the original msg_size isn't known, it can be set to UOFF_T_MAX. */ +struct istream_attachment_connector * +istream_attachment_connector_begin(struct istream *base_input, uoff_t msg_size); + +/* Add the given input stream as attachment. The attachment starts at the given + start_offset in the (original) message. If base64_blocks_per_line is + non-zero, the input is base64-encoded with the given settings. The + (resulting base64-encoded) input must have exactly encoded_size bytes. + + Returns 0 if the input was ok, -1 if we've already reached msg_size or + attachment offsets/sizes aren't valid. */ +int istream_attachment_connector_add(struct istream_attachment_connector *conn, + struct istream *decoded_input, + uoff_t start_offset, uoff_t encoded_size, + unsigned int base64_blocks_per_line, + bool base64_have_crlf, + const char **error_r); + +struct istream * +istream_attachment_connector_finish(struct istream_attachment_connector **conn); +void istream_attachment_connector_abort(struct istream_attachment_connector **conn); + +#endif |