dovecot-1.2: mailbox.save_init() API now takes ** pointer to des...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Jul 20 23:47:36 EEST 2008
details: http://hg.dovecot.org/dovecot-1.2/rev/dc280df713f4
changeset: 8038:dc280df713f4
user: Timo Sirainen <tss at iki.fi>
date: Sun Jul 20 23:47:32 2008 +0300
description:
mailbox.save_init() API now takes ** pointer to dest_mail, so multiple
plugins can safely specify it. ctx->dest_mail also gets updated then.
diffstat:
13 files changed, 36 insertions(+), 37 deletions(-)
src/lib-storage/index/cydir/cydir-save.c | 14 +++++++-------
src/lib-storage/index/cydir/cydir-storage.h | 2 +-
src/lib-storage/index/dbox/dbox-save.c | 16 ++++++++--------
src/lib-storage/index/dbox/dbox-storage.h | 2 +-
src/lib-storage/index/maildir/maildir-save.c | 4 ++--
src/lib-storage/index/maildir/maildir-storage.h | 3 ++-
src/lib-storage/index/mbox/mbox-save.c | 12 ++++++------
src/lib-storage/index/mbox/mbox-storage.h | 2 +-
src/lib-storage/mail-storage-private.h | 2 +-
src/lib-storage/mail-storage.c | 2 +-
src/plugins/acl/acl-mailbox.c | 2 +-
src/plugins/quota/quota-storage.c | 10 ++++------
src/plugins/virtual/virtual-storage.c | 2 +-
diffs (275 lines):
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/cydir/cydir-save.c
--- a/src/lib-storage/index/cydir/cydir-save.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/cydir/cydir-save.c Sun Jul 20 23:47:32 2008 +0300
@@ -61,7 +61,7 @@ int cydir_save_init(struct mailbox_trans
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset ATTR_UNUSED,
const char *from_envelope ATTR_UNUSED,
- struct istream *input, struct mail *dest_mail,
+ struct istream *input, struct mail **dest_mail,
struct mail_save_context **ctx_r)
{
struct cydir_transaction_context *t =
@@ -109,18 +109,18 @@ int cydir_save_init(struct mailbox_trans
MODIFY_REPLACE, keywords);
}
- if (dest_mail == NULL) {
+ if (*dest_mail == NULL) {
if (ctx->mail == NULL)
ctx->mail = mail_alloc(_t, 0, NULL);
- dest_mail = ctx->mail;
- }
- mail_set_seq(dest_mail, ctx->seq);
+ *dest_mail = ctx->mail;
+ }
+ mail_set_seq(*dest_mail, ctx->seq);
crlf_input = i_stream_create_crlf(input);
- ctx->input = index_mail_cache_parse_init(dest_mail, crlf_input);
+ ctx->input = index_mail_cache_parse_init(*dest_mail, crlf_input);
i_stream_unref(&crlf_input);
- ctx->cur_dest_mail = dest_mail;
+ ctx->cur_dest_mail = *dest_mail;
ctx->cur_received_date = received_date;
*ctx_r = &ctx->ctx;
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/cydir/cydir-storage.h
--- a/src/lib-storage/index/cydir/cydir-storage.h Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/cydir/cydir-storage.h Sun Jul 20 23:47:32 2008 +0300
@@ -37,7 +37,7 @@ int cydir_save_init(struct mailbox_trans
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r);
+ struct mail **dest_mail, struct mail_save_context **ctx_r);
int cydir_save_continue(struct mail_save_context *ctx);
int cydir_save_finish(struct mail_save_context *ctx);
void cydir_save_cancel(struct mail_save_context *ctx);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/dbox/dbox-save.c
--- a/src/lib-storage/index/dbox/dbox-save.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/dbox/dbox-save.c Sun Jul 20 23:47:32 2008 +0300
@@ -65,7 +65,7 @@ int dbox_save_init(struct mailbox_transa
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset ATTR_UNUSED,
const char *from_envelope ATTR_UNUSED,
- struct istream *input, struct mail *dest_mail,
+ struct istream *input, struct mail **dest_mail,
struct mail_save_context **ctx_r)
{
struct dbox_transaction_context *t =
@@ -110,17 +110,17 @@ int dbox_save_init(struct mailbox_transa
MODIFY_REPLACE, keywords);
}
- if (dest_mail == NULL) {
+ if (*dest_mail == NULL) {
if (ctx->mail == NULL)
ctx->mail = mail_alloc(_t, 0, NULL);
- dest_mail = ctx->mail;
- }
- mail_set_seq(dest_mail, ctx->seq);
-
- ctx->cur_dest_mail = dest_mail;
+ *dest_mail = ctx->mail;
+ }
+ mail_set_seq(*dest_mail, ctx->seq);
+
+ ctx->cur_dest_mail = *dest_mail;
crlf_input = i_stream_create_lf(input);
- ctx->input = index_mail_cache_parse_init(dest_mail, crlf_input);
+ ctx->input = index_mail_cache_parse_init(*dest_mail, crlf_input);
i_stream_unref(&crlf_input);
save_mail = array_append_space(&ctx->mails);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/dbox/dbox-storage.h
--- a/src/lib-storage/index/dbox/dbox-storage.h Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/dbox/dbox-storage.h Sun Jul 20 23:47:32 2008 +0300
@@ -86,7 +86,7 @@ int dbox_save_init(struct mailbox_transa
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r);
+ struct mail **dest_mail, struct mail_save_context **ctx_r);
int dbox_save_continue(struct mail_save_context *ctx);
int dbox_save_finish(struct mail_save_context *ctx);
void dbox_save_cancel(struct mail_save_context *ctx);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/maildir/maildir-save.c
--- a/src/lib-storage/index/maildir/maildir-save.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/maildir/maildir-save.c Sun Jul 20 23:47:32 2008 +0300
@@ -350,7 +350,7 @@ int maildir_save_init(struct mailbox_tra
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset ATTR_UNUSED,
const char *from_envelope ATTR_UNUSED,
- struct istream *input, struct mail *dest_mail,
+ struct istream *input, struct mail **dest_mail,
struct mail_save_context **ctx_r)
{
struct maildir_transaction_context *t =
@@ -382,7 +382,7 @@ int maildir_save_init(struct mailbox_tra
i_stream_create_crlf(input) :
i_stream_create_lf(input);
- maildir_save_add(t, fname, flags, keywords, dest_mail);
+ maildir_save_add(t, fname, flags, keywords, *dest_mail);
}
} T_END;
if (ctx->failed)
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/maildir/maildir-storage.h
--- a/src/lib-storage/index/maildir/maildir-storage.h Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.h Sun Jul 20 23:47:32 2008 +0300
@@ -130,7 +130,8 @@ int maildir_save_init(struct mailbox_tra
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r);
+ struct mail **dest_mail,
+ struct mail_save_context **ctx_r);
int maildir_save_continue(struct mail_save_context *ctx);
int maildir_save_finish(struct mail_save_context *ctx);
void maildir_save_cancel(struct mail_save_context *ctx);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/mbox/mbox-save.c
--- a/src/lib-storage/index/mbox/mbox-save.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/mbox/mbox-save.c Sun Jul 20 23:47:32 2008 +0300
@@ -428,7 +428,7 @@ int mbox_save_init(struct mailbox_transa
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset ATTR_UNUSED,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r)
+ struct mail **dest_mail, struct mail_save_context **ctx_r)
{
struct mbox_transaction_context *t =
(struct mbox_transaction_context *)_t;
@@ -456,7 +456,7 @@ int mbox_save_init(struct mailbox_transa
ctx->failed = FALSE;
ctx->seq = 0;
- if (mbox_save_init_file(ctx, t, dest_mail != NULL) < 0) {
+ if (mbox_save_init_file(ctx, t, *dest_mail != NULL) < 0) {
ctx->failed = TRUE;
return -1;
}
@@ -488,12 +488,12 @@ int mbox_save_init(struct mailbox_transa
ctx->next_uid++;
/* parse and cache the mail headers as we read it */
- if (dest_mail == NULL) {
+ if (*dest_mail == NULL) {
if (ctx->mail == NULL)
ctx->mail = mail_alloc(_t, 0, NULL);
- dest_mail = ctx->mail;
- }
- mail_set_seq(dest_mail, ctx->seq);
+ *dest_mail = ctx->mail;
+ }
+ mail_set_seq(*dest_mail, ctx->seq);
}
mbox_save_append_flag_headers(ctx->headers, save_flags);
mbox_save_append_keyword_headers(ctx, keywords);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/index/mbox/mbox-storage.h
--- a/src/lib-storage/index/mbox/mbox-storage.h Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/index/mbox/mbox-storage.h Sun Jul 20 23:47:32 2008 +0300
@@ -77,7 +77,7 @@ int mbox_save_init(struct mailbox_transa
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r);
+ struct mail **dest_mail, struct mail_save_context **ctx_r);
int mbox_save_continue(struct mail_save_context *ctx);
int mbox_save_finish(struct mail_save_context *ctx);
void mbox_save_cancel(struct mail_save_context *ctx);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/mail-storage-private.h Sun Jul 20 23:47:32 2008 +0300
@@ -163,7 +163,7 @@ struct mailbox_vfuncs {
struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail,
+ struct mail **dest_mail,
struct mail_save_context **ctx_r);
int (*save_continue)(struct mail_save_context *ctx);
int (*save_finish)(struct mail_save_context *ctx);
diff -r ab1c170b1559 -r dc280df713f4 src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/lib-storage/mail-storage.c Sun Jul 20 23:47:32 2008 +0300
@@ -791,7 +791,7 @@ int mailbox_save_init(struct mailbox_tra
}
if (t->box->v.save_init(t, flags, keywords,
received_date, timezone_offset,
- from_envelope, input, dest_mail, ctx_r) < 0)
+ from_envelope, input, &dest_mail, ctx_r) < 0)
return -1;
(*ctx_r)->dest_mail = dest_mail;
diff -r ab1c170b1559 -r dc280df713f4 src/plugins/acl/acl-mailbox.c
--- a/src/plugins/acl/acl-mailbox.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/plugins/acl/acl-mailbox.c Sun Jul 20 23:47:32 2008 +0300
@@ -250,7 +250,7 @@ acl_save_init(struct mailbox_transaction
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r)
+ struct mail **dest_mail, struct mail_save_context **ctx_r)
{
struct acl_mailbox *abox = ACL_CONTEXT(t->box);
diff -r ab1c170b1559 -r dc280df713f4 src/plugins/quota/quota-storage.c
--- a/src/plugins/quota/quota-storage.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/plugins/quota/quota-storage.c Sun Jul 20 23:47:32 2008 +0300
@@ -191,7 +191,7 @@ quota_save_init(struct mailbox_transacti
enum mail_flags flags, struct mail_keywords *keywords,
time_t received_date, int timezone_offset,
const char *from_envelope, struct istream *input,
- struct mail *dest_mail, struct mail_save_context **ctx_r)
+ struct mail **dest_mail, struct mail_save_context **ctx_r)
{
struct quota_transaction_context *qt = QUOTA_CONTEXT(t);
struct quota_mailbox *qbox = QUOTA_CONTEXT(t->box);
@@ -224,13 +224,13 @@ quota_save_init(struct mailbox_transacti
}
}
- if (dest_mail == NULL) {
+ if (*dest_mail == NULL) {
/* we always want to know the mail size */
if (qt->tmp_mail == NULL) {
qt->tmp_mail = mail_alloc(t, MAIL_FETCH_PHYSICAL_SIZE,
NULL);
}
- dest_mail = qt->tmp_mail;
+ *dest_mail = qt->tmp_mail;
}
return qbox->module_ctx.super.
@@ -241,15 +241,13 @@ quota_save_init(struct mailbox_transacti
static int quota_save_finish(struct mail_save_context *ctx)
{
- struct quota_transaction_context *qt = QUOTA_CONTEXT(ctx->transaction);
struct quota_mailbox *qbox = QUOTA_CONTEXT(ctx->transaction->box);
if (qbox->module_ctx.super.save_finish(ctx) < 0)
return -1;
qbox->save_hack = TRUE;
- return quota_check(ctx->transaction, ctx->dest_mail != NULL ?
- ctx->dest_mail : qt->tmp_mail);
+ return quota_check(ctx->transaction, ctx->dest_mail);
}
static void quota_mailbox_sync_finish(struct quota_mailbox *qbox)
diff -r ab1c170b1559 -r dc280df713f4 src/plugins/virtual/virtual-storage.c
--- a/src/plugins/virtual/virtual-storage.c Sun Jul 20 23:20:19 2008 +0300
+++ b/src/plugins/virtual/virtual-storage.c Sun Jul 20 23:47:32 2008 +0300
@@ -467,7 +467,7 @@ virtual_save_init(struct mailbox_transac
int timezone_offset ATTR_UNUSED,
const char *from_envelope ATTR_UNUSED,
struct istream *input ATTR_UNUSED,
- struct mail *dest_mail ATTR_UNUSED,
+ struct mail **dest_mail ATTR_UNUSED,
struct mail_save_context **ctx_r)
{
mail_storage_set_error(_t->box->storage, MAIL_ERROR_NOTPOSSIBLE,
More information about the dovecot-cvs
mailing list