Mercurial > dovecot > core-2.2
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 |
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 |