Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8038:dc280df713f4 HEAD
mailbox.save_init() API now takes ** pointer to dest_mail, so multiple
plugins can safely specify it. ctx->dest_mail also gets updated then.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 20 Jul 2008 23:47:32 +0300 |
parents | ab1c170b1559 |
children | ccf59801b63c |
files | src/lib-storage/index/cydir/cydir-save.c src/lib-storage/index/cydir/cydir-storage.h src/lib-storage/index/dbox/dbox-save.c src/lib-storage/index/dbox/dbox-storage.h src/lib-storage/index/maildir/maildir-save.c src/lib-storage/index/maildir/maildir-storage.h src/lib-storage/index/mbox/mbox-save.c src/lib-storage/index/mbox/mbox-storage.h src/lib-storage/mail-storage-private.h src/lib-storage/mail-storage.c src/plugins/acl/acl-mailbox.c src/plugins/quota/quota-storage.c src/plugins/virtual/virtual-storage.c |
diffstat | 13 files changed, 32 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ 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 @@ 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; + *dest_mail = ctx->mail; } - mail_set_seq(dest_mail, ctx->seq); + 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;
--- 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 @@ 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);
--- 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 @@ 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 @@ 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; + *dest_mail = ctx->mail; } - mail_set_seq(dest_mail, ctx->seq); + mail_set_seq(*dest_mail, ctx->seq); - ctx->cur_dest_mail = dest_mail; + 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);
--- 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 @@ 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);
--- 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 @@ 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 @@ 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)
--- 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 @@ 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);
--- 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 @@ 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 @@ 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 @@ 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; + *dest_mail = ctx->mail; } - mail_set_seq(dest_mail, ctx->seq); + mail_set_seq(*dest_mail, ctx->seq); } mbox_save_append_flag_headers(ctx->headers, save_flags); mbox_save_append_keyword_headers(ctx, keywords);
--- 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 @@ 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);
--- 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 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);
--- 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 @@ } 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;
--- 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 @@ 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);
--- 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 @@ 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 @@ } } - 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 @@ 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)
--- 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 @@ 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,