annotate src/lib-imap-storage/imap-msgpart.h @ 22652:09523ad05bef

director: Log whenever HOST-RESET-USERS is used
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 05 Nov 2017 22:53:23 +0200
parents 4cd9e46e0c78
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14591
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
1 #ifndef IMAP_MSGPART_H
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
2 #define IMAP_MSGPART_H
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
3
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
4 struct imap_msgpart;
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
5
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
6 struct imap_msgpart_open_result {
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
7 /* message contents with CRLF linefeeds */
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
8 struct istream *input;
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
9 /* size of input */
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
10 uoff_t size;
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
11 /* if size was looked up using cache and it ends up being wrong,
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
12 this field can be used to log about cache corruption */
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
13 enum mail_fetch_field size_field;
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
14 /* TRUE if BINARY decoded content contains NUL characters */
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
15 bool binary_decoded_input_has_nuls;
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
16 };
14591
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
17
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
18 struct imap_msgpart *imap_msgpart_full(void);
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
19 struct imap_msgpart *imap_msgpart_header(void);
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
20 struct imap_msgpart *imap_msgpart_body(void);
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
21 /* Parse section into imap_msgpart. Returns 0 and msgpart_r on success,
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
22 -1 if the section isn't valid. The same imap_msgpart can be used to open
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
23 multiple messages. */
14888
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
24 int imap_msgpart_parse(const char *section, struct imap_msgpart **msgpart_r);
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
25 void imap_msgpart_free(struct imap_msgpart **msgpart);
14591
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
26
18705
4cd9e46e0c78 lib-imap-storage: Added imap_msgpart_contains_body()
Timo Sirainen <tss@iki.fi>
parents: 18513
diff changeset
27 /* Returns TRUE if the msgpart might return at least part of the message body.
4cd9e46e0c78 lib-imap-storage: Added imap_msgpart_contains_body()
Timo Sirainen <tss@iki.fi>
parents: 18513
diff changeset
28 Or alternatively: If FALSE is returned, the msgpart will never return
4cd9e46e0c78 lib-imap-storage: Added imap_msgpart_contains_body()
Timo Sirainen <tss@iki.fi>
parents: 18513
diff changeset
29 anything except (part of) the message header. MIME headers are counted
4cd9e46e0c78 lib-imap-storage: Added imap_msgpart_contains_body()
Timo Sirainen <tss@iki.fi>
parents: 18513
diff changeset
30 as part of the message body. */
4cd9e46e0c78 lib-imap-storage: Added imap_msgpart_contains_body()
Timo Sirainen <tss@iki.fi>
parents: 18513
diff changeset
31 bool imap_msgpart_contains_body(const struct imap_msgpart *msgpart);
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
32 /* Decode MIME parts with Content-Transfer-Encoding: base64/quoted-printable
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
33 to binary data (IMAP BINARY extension). If something can't be decoded, fails
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
34 with storage error set to MAIL_ERROR_CONVERSION. */
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
35 void imap_msgpart_set_decode_to_binary(struct imap_msgpart *msgpart);
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
36
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
37 /* Set the fetch to be partial. For unlimited size use (uoff_t)-1. */
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
38 void imap_msgpart_set_partial(struct imap_msgpart *msgpart,
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
39 uoff_t offset, uoff_t size);
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
40 uoff_t imap_msgpart_get_partial_offset(struct imap_msgpart *msgpart);
15637
b0e0eb30c2b9 lib-imap-storage: Added imap_msgpart_get_partial_size() missing from previous commit.
Timo Sirainen <tss@iki.fi>
parents: 15070
diff changeset
41 uoff_t imap_msgpart_get_partial_size(struct imap_msgpart *msgpart);
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
42 /* Return wanted_fields mask. */
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
43 enum mail_fetch_field imap_msgpart_get_fetch_data(struct imap_msgpart *msgpart);
18513
8c49fb6d789b imap: FETCH BODY.PEEK[HEADER.FIELDS (..)] didn't set wanted_headers optimization.
Timo Sirainen <tss@iki.fi>
parents: 15637
diff changeset
44 /* Append all the specifically requested headers to the headers array
8c49fb6d789b imap: FETCH BODY.PEEK[HEADER.FIELDS (..)] didn't set wanted_headers optimization.
Timo Sirainen <tss@iki.fi>
parents: 15637
diff changeset
45 (no deduplication is done) */
8c49fb6d789b imap: FETCH BODY.PEEK[HEADER.FIELDS (..)] didn't set wanted_headers optimization.
Timo Sirainen <tss@iki.fi>
parents: 15637
diff changeset
46 void imap_msgpart_get_wanted_headers(struct imap_msgpart *msgpart,
8c49fb6d789b imap: FETCH BODY.PEEK[HEADER.FIELDS (..)] didn't set wanted_headers optimization.
Timo Sirainen <tss@iki.fi>
parents: 15637
diff changeset
47 ARRAY_TYPE(const_string) *headers);
14622
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
48
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
49 /* Open message part refenced by IMAP section as istream. Returns 0 if
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
50 successful, -1 if storage error. Returned istream is initially referenced,
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
51 so i_stream_unref() must be called for it. */
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
52 int imap_msgpart_open(struct mail *mail, struct imap_msgpart *msgpart,
6fb61872b30a lib-imap-storage: imap-msgpart rewrite and API change.
Timo Sirainen <tss@iki.fi>
parents: 14594
diff changeset
53 struct imap_msgpart_open_result *result_r);
14859
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
54 /* Return msgpart's size without actually opening the stream (if possible). */
f3ef88e19cd5 IMAP BINARY extension supports now FETCH BINARY command.
Timo Sirainen <tss@iki.fi>
parents: 14622
diff changeset
55 int imap_msgpart_size(struct mail *mail, struct imap_msgpart *msgpart,
15070
8e29272c35fa lib-imap-storage: imap_msgpart_size() should return size as uoff_t, not size_t
Timo Sirainen <tss@iki.fi>
parents: 15058
diff changeset
56 uoff_t *size_r);
14591
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
57
15058
a69c48fa4f32 lib-imap-storage: Added support for getting BODYPARTSTRUCTURE
Timo Sirainen <tss@iki.fi>
parents: 14888
diff changeset
58 /* Return msgpart's IMAP BODYPARTSTRUCTURE */
a69c48fa4f32 lib-imap-storage: Added support for getting BODYPARTSTRUCTURE
Timo Sirainen <tss@iki.fi>
parents: 14888
diff changeset
59 int imap_msgpart_bodypartstructure(struct mail *mail,
a69c48fa4f32 lib-imap-storage: Added support for getting BODYPARTSTRUCTURE
Timo Sirainen <tss@iki.fi>
parents: 14888
diff changeset
60 struct imap_msgpart *msgpart,
a69c48fa4f32 lib-imap-storage: Added support for getting BODYPARTSTRUCTURE
Timo Sirainen <tss@iki.fi>
parents: 14888
diff changeset
61 const char **bpstruct_r);
a69c48fa4f32 lib-imap-storage: Added support for getting BODYPARTSTRUCTURE
Timo Sirainen <tss@iki.fi>
parents: 14888
diff changeset
62
14888
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
63 /* Header context is automatically created by imap_msgpart_open() and destroyed
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
64 by imap_msgpart_free(), but if you want to use the same imap_msgpart across
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
65 multiple mailboxes, you need to close the part before closing the mailbox. */
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
66 void imap_msgpart_close_mailbox(struct imap_msgpart *msgpart);
cf79ab812651 imap_msgpart_parse() doesn't really need a mailbox parameter.
Timo Sirainen <tss@iki.fi>
parents: 14859
diff changeset
67
14591
07e6ca397a72 Created lib-imap-storage for IMAP-specific functionality that uses lib-storage.
Stephan Bosch <stephan@rename-it.nl>
parents:
diff changeset
68 #endif