1 #ifndef IMAP_MSGPART_URL_H 2 #define IMAP_MSGPART_URL_H 3 4 #include "imap-msgpart.h" 5 6 struct imap_url; 7 struct imap_msgpart; 8 struct imap_msgpart_url; 9 10 /* Functions returning int return 1 on success, 0 if URL doesn't point to 11 valid mail, -1 on storage error. */ 12 13 int imap_msgpart_url_create(struct mail_user *user, const struct imap_url *url, 14 struct imap_msgpart_url **url_r, 15 const char **client_error_r); 16 int imap_msgpart_url_parse(struct mail_user *user, struct mailbox *selected_box, 17 const char *urlstr, struct imap_msgpart_url **url_r, 18 const char **client_error_r); 19 20 int imap_msgpart_url_open_mailbox(struct imap_msgpart_url *mpurl, 21 struct mailbox **box_r, enum mail_error *error_code_r, 22 const char **client_error_r); 23 struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url *mpurl); 24 int imap_msgpart_url_open_mail(struct imap_msgpart_url *mpurl, 25 struct mail **mail_r, 26 const char **client_error_r); 27 28 struct imap_msgpart * 29 imap_msgpart_url_get_part(struct imap_msgpart_url *mpurl); 30 31 /* Decode MIME parts with Content-Transfer-Encoding: base64/quoted-printable 32 to binary data (IMAP BINARY extension). If something can't be decoded, fails 33 with storage error set to MAIL_ERROR_CONVERSION. */ 34 void imap_msgpart_url_set_decode_to_binary(struct imap_msgpart_url *mpurl); 35 36 /* stream_r is set to NULL when part has zero length, e.g. when partial offset 37 is larger than the size of the referenced part */ 38 int imap_msgpart_url_read_part(struct imap_msgpart_url *mpurl, 39 struct imap_msgpart_open_result *result_r, 40 const char **client_error_r); 41 42 int imap_msgpart_url_get_bodypartstructure(struct imap_msgpart_url *mpurl, 43 const char **bpstruct_r, 44 const char **client_error_r); 45 46 int imap_msgpart_url_verify(struct imap_msgpart_url *mpurl, 47 const char **client_error_r); 48 void imap_msgpart_url_free(struct imap_msgpart_url **mpurl); 49 50 #endif 51