comparison src/lib-imap-storage/imap-msgpart-url.c @ 14737:1af9d08e67d7

imap: CATENATE command fixes. Patch by Stephan Bosch
author Timo Sirainen <tss@iki.fi>
date Tue, 31 Jul 2012 02:46:21 +0300
parents 6fb61872b30a
children cf79ab812651
comparison
equal deleted inserted replaced
14736:4d518c1a366c 14737:1af9d08e67d7
65 65
66 /* parse url */ 66 /* parse url */
67 if (imap_url_parse(urlstr, &base_url, 67 if (imap_url_parse(urlstr, &base_url,
68 IMAP_URL_PARSE_REQUIRE_RELATIVE, &url, &error) < 0) { 68 IMAP_URL_PARSE_REQUIRE_RELATIVE, &url, &error) < 0) {
69 *error_r = t_strconcat("Invalid IMAP URL: ", error, NULL); 69 *error_r = t_strconcat("Invalid IMAP URL: ", error, NULL);
70 return -1; 70 return 0;
71 } 71 }
72 if (url->mailbox == NULL) { 72 if (url->mailbox == NULL) {
73 *error_r = "Mailbox-relative IMAP URL, but no mailbox selected"; 73 *error_r = "Mailbox-relative IMAP URL, but no mailbox selected";
74 return -1; 74 return 0;
75 } 75 }
76 if (url->uid == 0 || url->search_program != NULL) { 76 if (url->uid == 0 || url->search_program != NULL) {
77 *error_r = "Invalid messagepart IMAP URL"; 77 *error_r = "Invalid messagepart IMAP URL";
78 return -1; 78 return 0;
79 } 79 }
80 *url_r = imap_msgpart_url_create(user, url); 80 *url_r = imap_msgpart_url_create(user, url);
81 return 0; 81 return 1;
82 } 82 }
83 83
84 struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url *mpurl) 84 struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url *mpurl)
85 { 85 {
86 return mpurl->box; 86 return mpurl->box;
166 166
167 static int 167 static int
168 imap_msgpart_url_open_part(struct imap_msgpart_url *mpurl, struct mail **mail_r, 168 imap_msgpart_url_open_part(struct imap_msgpart_url *mpurl, struct mail **mail_r,
169 struct imap_msgpart **msgpart_r, const char **error_r) 169 struct imap_msgpart **msgpart_r, const char **error_r)
170 { 170 {
171 const char *section = mpurl->section == NULL ? "" : mpurl->section;
171 int ret; 172 int ret;
172 173
173 if ((ret = imap_msgpart_url_open_mail(mpurl, mail_r, error_r)) <= 0) 174 if ((ret = imap_msgpart_url_open_mail(mpurl, mail_r, error_r)) <= 0)
174 return ret; 175 return ret;
175 176
176 if (imap_msgpart_parse((*mail_r)->box, mpurl->section, msgpart_r) < 0) { 177 if (imap_msgpart_parse((*mail_r)->box, section, msgpart_r) < 0) {
177 *error_r = "Invalid section"; 178 *error_r = "Invalid section";
178 return 0; 179 return 0;
179 } 180 }
180 imap_msgpart_set_partial(*msgpart_r, mpurl->partial_offset, 181 imap_msgpart_set_partial(*msgpart_r, mpurl->partial_offset,
181 mpurl->partial_size == 0 ? (uoff_t)-1 : 182 mpurl->partial_size == 0 ? (uoff_t)-1 :