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