return -1;
}
-static struct mail * fail_mail_get_real_mail(struct mail *mail)
+static int fail_mail_get_backend_mail(struct mail *mail,
+ struct mail **real_mail_r)
{
- return mail;
+ *real_mail_r = mail;
+ return 0;
}
static void
fail_mail_get_stream,
fail_mail_get_binary_stream,
fail_mail_get_special,
- fail_mail_get_real_mail,
+ fail_mail_get_backend_mail,
fail_mail_update_flags,
fail_mail_update_keywords,
fail_mail_update_modseq,
cydir_mail_get_stream,
index_mail_get_binary_stream,
index_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
dbox_mail_get_stream,
index_mail_get_binary_stream,
mdbox_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
mdbox_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
dbox_mail_get_stream,
index_mail_get_binary_stream,
sdbox_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
imapc_mail_get_stream,
index_mail_get_binary_stream,
imapc_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
}
}
-struct mail *index_mail_get_real_mail(struct mail *mail)
+int index_mail_get_backend_mail(struct mail *mail,
+ struct mail **real_mail_r)
{
- return mail;
+ *real_mail_r = mail;
+ return 0;
}
struct mail *
struct istream **stream_r);
int index_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
const char **value_r);
-struct mail *index_mail_get_real_mail(struct mail *mail);
+int index_mail_get_backend_mail(struct mail *mail, struct mail **real_mail_r);
void index_mail_update_flags(struct mail *mail, enum modify_type modify_type,
enum mail_flags flags);
maildir_mail_get_stream,
index_mail_get_binary_stream,
maildir_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
mbox_mail_get_stream,
index_mail_get_binary_stream,
mbox_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
pop3c_mail_get_stream,
index_mail_get_binary_stream,
pop3c_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
raw_mail_get_stream,
index_mail_get_binary_stream,
raw_mail_get_special,
- index_mail_get_real_mail,
+ index_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,
int (*get_special)(struct mail *mail, enum mail_fetch_field field,
const char **value_r);
- /* FIXME: v2.3 API should change this to return -1 on failure.
- for now NULL means failure so we don't break backwards
- compatibility. */
- struct mail *(*get_real_mail)(struct mail *mail);
+ int (*get_backend_mail)(struct mail *mail, struct mail **real_mail_r);
void (*update_flags)(struct mail *mail, enum modify_type modify_type,
enum mail_flags flags);
/* Returns the mail for the physical message. Normally this is the mail itself,
but in virtual mailboxes it points to the backend mailbox. */
int mail_get_backend_mail(struct mail *mail, struct mail **real_mail_r);
-/* FIXME: For backwards compatibility for now, use mail_get_backend_mail()
- instead. */
-struct mail *mail_get_real_mail(struct mail *mail);
/* Update message flags. */
void mail_update_flags(struct mail *mail, enum modify_type modify_type,
int mail_get_backend_mail(struct mail *mail, struct mail **real_mail_r)
{
struct mail_private *p = (struct mail_private *)mail;
-
- *real_mail_r = p->v.get_real_mail(mail);
- return *real_mail_r == NULL ? -1 : 0;
-}
-
-struct mail *mail_get_real_mail(struct mail *mail)
-{
- struct mail *backend_mail;
-
- if (mail_get_backend_mail(mail, &backend_mail) < 0) {
- i_panic("FIXME: Error occurred in mail_get_real_mail(), "
- "switch to using mail_get_backend_mail() instead");
- }
- return backend_mail;
+ return p->v.get_backend_mail(mail, real_mail_r);
}
void mail_update_flags(struct mail *mail, enum modify_type modify_type,
return 0;
}
-static struct mail *virtual_mail_get_real_mail(struct mail *mail)
+static int virtual_mail_get_backend_mail(struct mail *mail,
+ struct mail **real_mail_r)
{
struct virtual_mail *vmail = (struct virtual_mail *)mail;
- struct mail *backend_mail, *real_mail;
+ struct mail *backend_mail;
if (backend_mail_get(vmail, &backend_mail) < 0)
- return NULL;
+ return -1;
- if (mail_get_backend_mail(backend_mail, &real_mail) < 0)
- return NULL;
- return real_mail;
+ if (mail_get_backend_mail(backend_mail, real_mail_r) < 0)
+ return -1;
+ return 0;
}
static void virtual_mail_update_pop3_uidl(struct mail *mail, const char *uidl)
virtual_mail_get_stream,
index_mail_get_binary_stream,
virtual_mail_get_special,
- virtual_mail_get_real_mail,
+ virtual_mail_get_backend_mail,
index_mail_update_flags,
index_mail_update_keywords,
index_mail_update_modseq,