if (ctx->failed)
return -1;
- ret = imap_msgpart_url_parse(cmd->client->user, cmd->client->mailbox,
- caturl, &mpurl, &client_error);
- if (ret < 0) {
- client_send_box_error(cmd, ctx->box);
- return -1;
- }
- if (ret == 0) {
+ if (imap_msgpart_url_parse(cmd->client->user, cmd->client->mailbox,
+ caturl, &mpurl, &client_error) < 0) {
/* invalid url, abort */
client_send_tagline(cmd,
t_strdup_printf("NO [BADURL %s] %s.",
if (imap_url_parse(urlstr, &base_url,
IMAP_URL_PARSE_REQUIRE_RELATIVE, &url, &error) < 0) {
*client_error_r = t_strconcat("Invalid IMAP URL: ", error, NULL);
- return 0;
+ return -1;
}
if (url->mailbox == NULL) {
*client_error_r = "Mailbox-relative IMAP URL, but no mailbox selected";
- return 0;
+ return -1;
}
if (imap_msgpart_url_create(user, url, mpurl_r, client_error_r) < 0)
- return 0;
+ return -1;
(*mpurl_r)->selected_box = selected_box;
- return 1;
+ return 0;
}
struct mailbox *imap_msgpart_url_get_mailbox(struct imap_msgpart_url *mpurl)
struct imap_msgpart;
struct imap_msgpart_url;
-/* Functions returning int return 1 on success, 0 if URL doesn't point to
- valid mail, -1 on storage error. */
-
+/* Returns 0 = success, -1 = invalid URL */
int imap_msgpart_url_create(struct mail_user *user, const struct imap_url *url,
struct imap_msgpart_url **url_r,
const char **client_error_r);
+/* Returns 0 = success, -1 = invalid URL */
int imap_msgpart_url_parse(struct mail_user *user, struct mailbox *selected_box,
const char *urlstr, struct imap_msgpart_url **url_r,
const char **client_error_r);
+/* The following functions returning int return 1 on success, 0 if URL doesn't
+ point to valid mailbox/mail, -1 on storage error. */
int imap_msgpart_url_open_mailbox(struct imap_msgpart_url *mpurl,
struct mailbox **box_r, enum mail_error *error_code_r,
const char **client_error_r);