Lines Matching refs:mpurl
38 struct imap_msgpart_url *mpurl;
51 mpurl = i_new(struct imap_msgpart_url, 1);
52 mpurl->part = msgpart;
53 mpurl->user = user;
54 mpurl->mailbox = i_strdup(url->mailbox);
55 mpurl->uidvalidity = url->uidvalidity;
56 mpurl->uid = url->uid;
58 mpurl->section = i_strdup(url->section);
59 mpurl->partial_offset = url->partial_offset;
60 mpurl->partial_size = url->partial_size;
66 *mpurl_r = mpurl;
103 struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url *mpurl)
105 return mpurl->box;
108 int imap_msgpart_url_open_mailbox(struct imap_msgpart_url *mpurl,
117 if (mpurl->box != NULL) {
118 *box_r = mpurl->box;
124 ns = mail_namespace_find(mpurl->user->namespaces, mpurl->mailbox);
127 if (mpurl->selected_box != NULL &&
128 mailbox_equals(mpurl->selected_box, ns, mpurl->mailbox))
129 box = mpurl->selected_box;
131 box = mailbox_alloc(ns->list, mpurl->mailbox, flags);
137 if (box != mpurl->selected_box)
144 if (mpurl->uidvalidity > 0 &&
145 box_status.uidvalidity != mpurl->uidvalidity) {
148 if (box != mpurl->selected_box)
152 mpurl->box = box;
157 int imap_msgpart_url_open_mail(struct imap_msgpart_url *mpurl,
166 if (mpurl->mail != NULL) {
167 *mail_r = mpurl->mail;
172 if ((ret = imap_msgpart_url_open_mailbox(mpurl, &box, &error_code,
182 if (!mail_set_uid(mail, mpurl->uid)) {
189 mpurl->trans = t;
190 mpurl->mail = mail;
196 imap_msgpart_url_get_part(struct imap_msgpart_url *mpurl)
198 return mpurl->part;
201 void imap_msgpart_url_set_decode_to_binary(struct imap_msgpart_url *mpurl)
203 imap_msgpart_set_decode_to_binary(mpurl->part);
206 int imap_msgpart_url_read_part(struct imap_msgpart_url *mpurl,
213 if (mpurl->result.input != NULL) {
214 i_stream_seek(mpurl->result.input, 0);
215 *result_r = mpurl->result;
220 ret = imap_msgpart_url_open_mail(mpurl, &mail, error_r);
225 ret = imap_msgpart_open(mail, mpurl->part, result_r);
227 *error_r = mailbox_get_last_error(mpurl->box, NULL);
231 mpurl->result = *result_r;
235 int imap_msgpart_url_verify(struct imap_msgpart_url *mpurl,
241 if (mpurl->result.input != NULL)
245 ret = imap_msgpart_url_open_mail(mpurl, &mail, error_r);
249 int imap_msgpart_url_get_bodypartstructure(struct imap_msgpart_url *mpurl,
257 ret = imap_msgpart_url_open_mail(mpurl, &mail, error_r);
261 ret = imap_msgpart_bodypartstructure(mail, mpurl->part, bpstruct_r);
263 *error_r = mailbox_get_last_error(mpurl->box, NULL);
271 struct imap_msgpart_url *mpurl = *_mpurl;
275 i_stream_unref(&mpurl->result.input);
276 if (mpurl->part != NULL)
277 imap_msgpart_free(&mpurl->part);
278 if (mpurl->mail != NULL)
279 mail_free(&mpurl->mail);
280 if (mpurl->trans != NULL)
281 mailbox_transaction_rollback(&mpurl->trans);
282 if (mpurl->box != NULL && mpurl->box != mpurl->selected_box)
283 mailbox_free(&mpurl->box);
284 if (mpurl->section != NULL)
285 i_free(mpurl->section);
286 i_free(mpurl->mailbox);
287 i_free(mpurl);