dovecot-2.2: lib-storage: Partially reverted the mail.get_real_m...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Apr 30 14:38:28 UTC 2014
details: http://hg.dovecot.org/dovecot-2.2/rev/5c4205a95028
changeset: 17297:5c4205a95028
user: Timo Sirainen <tss at iki.fi>
date: Wed Apr 30 17:37:43 2014 +0300
description:
lib-storage: Partially reverted the mail.get_real_mail() API change for backwards compatibility.
I hadn't realized Pigeonhole was also using it. (I thought it was using only
the mail_get_real_mail() public API.) This fixes Pigeonhole v0.4.2 to work
again.
diffstat:
src/lib-storage/fail-mail.c | 5 ++---
src/lib-storage/index/index-mail.c | 5 ++---
src/lib-storage/index/index-mail.h | 2 +-
src/lib-storage/mail-storage-private.h | 5 ++++-
src/lib-storage/mail.c | 3 ++-
src/plugins/virtual/virtual-mail.c | 11 ++++++-----
6 files changed, 17 insertions(+), 14 deletions(-)
diffs (98 lines):
diff -r 99a4788770cb -r 5c4205a95028 src/lib-storage/fail-mail.c
--- a/src/lib-storage/fail-mail.c Wed Apr 30 06:08:46 2014 +0300
+++ b/src/lib-storage/fail-mail.c Wed Apr 30 17:37:43 2014 +0300
@@ -196,10 +196,9 @@
return -1;
}
-static int fail_mail_get_real_mail(struct mail *mail, struct mail **real_mail_r)
+static struct mail * fail_mail_get_real_mail(struct mail *mail)
{
- *real_mail_r = mail;
- return 0;
+ return mail;
}
static void
diff -r 99a4788770cb -r 5c4205a95028 src/lib-storage/index/index-mail.c
--- a/src/lib-storage/index/index-mail.c Wed Apr 30 06:08:46 2014 +0300
+++ b/src/lib-storage/index/index-mail.c Wed Apr 30 17:37:43 2014 +0300
@@ -1211,10 +1211,9 @@
}
}
-int index_mail_get_real_mail(struct mail *mail, struct mail **real_mail_r)
+struct mail *index_mail_get_real_mail(struct mail *mail)
{
- *real_mail_r = mail;
- return 0;
+ return mail;
}
struct mail *
diff -r 99a4788770cb -r 5c4205a95028 src/lib-storage/index/index-mail.h
--- a/src/lib-storage/index/index-mail.h Wed Apr 30 06:08:46 2014 +0300
+++ b/src/lib-storage/index/index-mail.h Wed Apr 30 17:37:43 2014 +0300
@@ -216,7 +216,7 @@
struct istream **stream_r);
int index_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
const char **value_r);
-int index_mail_get_real_mail(struct mail *mail, struct mail **real_mail_r);
+struct mail *index_mail_get_real_mail(struct mail *mail);
void index_mail_update_flags(struct mail *mail, enum modify_type modify_type,
enum mail_flags flags);
diff -r 99a4788770cb -r 5c4205a95028 src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h Wed Apr 30 06:08:46 2014 +0300
+++ b/src/lib-storage/mail-storage-private.h Wed Apr 30 17:37:43 2014 +0300
@@ -391,7 +391,10 @@
int (*get_special)(struct mail *mail, enum mail_fetch_field field,
const char **value_r);
- int (*get_real_mail)(struct mail *mail, struct mail **real_mail_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);
void (*update_flags)(struct mail *mail, enum modify_type modify_type,
enum mail_flags flags);
diff -r 99a4788770cb -r 5c4205a95028 src/lib-storage/mail.c
--- a/src/lib-storage/mail.c Wed Apr 30 06:08:46 2014 +0300
+++ b/src/lib-storage/mail.c Wed Apr 30 17:37:43 2014 +0300
@@ -276,7 +276,8 @@
{
struct mail_private *p = (struct mail_private *)mail;
- return p->v.get_real_mail(mail, real_mail_r);
+ *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)
diff -r 99a4788770cb -r 5c4205a95028 src/plugins/virtual/virtual-mail.c
--- a/src/plugins/virtual/virtual-mail.c Wed Apr 30 06:08:46 2014 +0300
+++ b/src/plugins/virtual/virtual-mail.c Wed Apr 30 17:37:43 2014 +0300
@@ -430,16 +430,17 @@
return 0;
}
-static int
-virtual_mail_get_real_mail(struct mail *mail, struct mail **real_mail_r)
+static struct mail *virtual_mail_get_real_mail(struct mail *mail)
{
struct virtual_mail *vmail = (struct virtual_mail *)mail;
- struct mail *backend_mail;
+ struct mail *backend_mail, *real_mail;
if (backend_mail_get(vmail, &backend_mail) < 0)
- return -1;
+ return NULL;
- return mail_get_backend_mail(backend_mail, real_mail_r);
+ if (mail_get_backend_mail(backend_mail, &real_mail) < 0)
+ return NULL;
+ return real_mail;
}
static void virtual_mail_update_pop3_uidl(struct mail *mail, const char *uidl)
More information about the dovecot-cvs
mailing list