dovecot: mail.close() virtual function finishing.

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 13 18:25:32 EEST 2007


details:   http://hg.dovecot.org/dovecot/rev/2f960cea48b1
changeset: 6291:2f960cea48b1
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 13 18:25:25 2007 +0300
description:
mail.close() virtual function finishing.

diffstat:

2 files changed, 26 insertions(+), 11 deletions(-)
src/lib-storage/index/index-mail.c |   32 +++++++++++++++++++++-----------
src/lib-storage/index/index-mail.h |    5 +++++

diffs (71 lines):

diff -r b04d136f8174 -r 2f960cea48b1 src/lib-storage/index/index-mail.c
--- a/src/lib-storage/index/index-mail.c	Mon Aug 13 18:00:19 2007 +0300
+++ b/src/lib-storage/index/index-mail.c	Mon Aug 13 18:25:25 2007 +0300
@@ -859,22 +859,34 @@ int index_mail_get_special(struct mail *
 }
 
 struct mail *
-index_mail_alloc(struct mailbox_transaction_context *_t,
+index_mail_alloc(struct mailbox_transaction_context *t,
 		 enum mail_fetch_field wanted_fields,
-		 struct mailbox_header_lookup_ctx *_wanted_headers)
+		 struct mailbox_header_lookup_ctx *wanted_headers)
+{
+	struct index_mail *mail;
+	pool_t pool;
+
+	pool = pool_alloconly_create("mail", 1024);
+	mail = p_new(pool, struct index_mail, 1);
+	mail->mail.pool = pool;
+
+	index_mail_init(mail, t, wanted_fields, wanted_headers);
+	return &mail->mail.mail;
+}
+
+void index_mail_init(struct index_mail *mail,
+		     struct mailbox_transaction_context *_t,
+		     enum mail_fetch_field wanted_fields,
+		     struct mailbox_header_lookup_ctx *_wanted_headers)
 {
 	struct index_transaction_context *t =
 		(struct index_transaction_context *)_t;
 	struct index_header_lookup_ctx *wanted_headers =
 		(struct index_header_lookup_ctx *)_wanted_headers;
-	struct index_mail *mail;
 	const struct mail_index_header *hdr;
-	pool_t pool;
-
-	pool = pool_alloconly_create("mail", 1024);
-	mail = p_new(pool, struct index_mail, 1);
-	mail->mail.pool = pool;
-	array_create(&mail->mail.module_contexts, pool, sizeof(void *), 5);
+
+	array_create(&mail->mail.module_contexts, mail->mail.pool,
+		     sizeof(void *), 5);
 
 	mail->mail.v = *t->ibox->mail_vfuncs;
 	mail->mail.mail.box = &t->ibox->box;
@@ -888,8 +900,6 @@ index_mail_alloc(struct mailbox_transact
 	mail->trans = t;
 	mail->wanted_fields = wanted_fields;
 	mail->wanted_headers = wanted_headers;
-
-	return &mail->mail.mail;
 }
 
 void index_mail_close(struct mail *_mail)
diff -r b04d136f8174 -r 2f960cea48b1 src/lib-storage/index/index-mail.h
--- a/src/lib-storage/index/index-mail.h	Mon Aug 13 18:00:19 2007 +0300
+++ b/src/lib-storage/index/index-mail.h	Mon Aug 13 18:25:25 2007 +0300
@@ -131,6 +131,11 @@ index_mail_alloc(struct mailbox_transact
 index_mail_alloc(struct mailbox_transaction_context *t,
 		 enum mail_fetch_field wanted_fields,
 		 struct mailbox_header_lookup_ctx *wanted_headers);
+void index_mail_init(struct index_mail *mail,
+		     struct mailbox_transaction_context *_t,
+		     enum mail_fetch_field wanted_fields,
+		     struct mailbox_header_lookup_ctx *_wanted_headers);
+
 void index_mail_set_seq(struct mail *mail, uint32_t seq);
 bool index_mail_set_uid(struct mail *mail, uint32_t uid);
 void index_mail_close(struct mail *mail);


More information about the dovecot-cvs mailing list