dovecot-2.0: lib-storage: *_mailboxes don't descend from index_m...

dovecot at dovecot.org dovecot at dovecot.org
Sun Feb 7 17:30:37 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/56b1d4dd9c7d
changeset: 10660:56b1d4dd9c7d
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Feb 07 17:30:24 2010 +0200
description:
lib-storage: *_mailboxes don't descend from index_mailbox anymore, it's now a context.

diffstat:

69 files changed, 660 insertions(+), 656 deletions(-)
src/lib-storage/index/cydir/cydir-save.c                 |    6 
src/lib-storage/index/cydir/cydir-storage.c              |   34 ++--
src/lib-storage/index/cydir/cydir-storage.h              |    2 
src/lib-storage/index/cydir/cydir-sync.c                 |   18 +-
src/lib-storage/index/dbox-common/dbox-mail.c            |    7 
src/lib-storage/index/dbox-common/dbox-storage.c         |   13 -
src/lib-storage/index/dbox-common/dbox-sync-rebuild.c    |    7 
src/lib-storage/index/dbox-common/dbox-sync-rebuild.h    |    4 
src/lib-storage/index/dbox-multi/mdbox-mail.c            |   11 -
src/lib-storage/index/dbox-multi/mdbox-save.c            |    6 
src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c |    2 
src/lib-storage/index/dbox-multi/mdbox-storage.c         |   41 ++---
src/lib-storage/index/dbox-multi/mdbox-storage.h         |    2 
src/lib-storage/index/dbox-multi/mdbox-sync.c            |   28 +--
src/lib-storage/index/dbox-single/sdbox-file.c           |    8 
src/lib-storage/index/dbox-single/sdbox-mail.c           |    2 
src/lib-storage/index/dbox-single/sdbox-save.c           |    4 
src/lib-storage/index/dbox-single/sdbox-storage.c        |   37 ++--
src/lib-storage/index/dbox-single/sdbox-storage.h        |    2 
src/lib-storage/index/dbox-single/sdbox-sync-file.c      |    2 
src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c   |   21 +-
src/lib-storage/index/dbox-single/sdbox-sync.c           |   24 +-
src/lib-storage/index/index-mail-headers.c               |   13 -
src/lib-storage/index/index-mail.c                       |   28 +--
src/lib-storage/index/index-mail.h                       |    2 
src/lib-storage/index/index-mailbox-check.c              |   30 ++-
src/lib-storage/index/index-search.c                     |   13 -
src/lib-storage/index/index-status.c                     |    3 
src/lib-storage/index/index-storage.c                    |  113 +++++++-------
src/lib-storage/index/index-storage.h                    |   38 ++--
src/lib-storage/index/index-sync-changes.c               |    5 
src/lib-storage/index/index-sync-changes.h               |    3 
src/lib-storage/index/index-sync-private.h               |    1 
src/lib-storage/index/index-sync-search.c                |    8 
src/lib-storage/index/index-sync.c                       |   63 ++++---
src/lib-storage/index/index-thread-private.h             |    4 
src/lib-storage/index/index-thread.c                     |    5 
src/lib-storage/index/index-transaction.c                |    6 
src/lib-storage/index/maildir/maildir-copy.c             |    8 
src/lib-storage/index/maildir/maildir-keywords.c         |    8 
src/lib-storage/index/maildir/maildir-mail.c             |   36 ++--
src/lib-storage/index/maildir/maildir-save.c             |   20 +-
src/lib-storage/index/maildir/maildir-storage.c          |   42 ++---
src/lib-storage/index/maildir/maildir-storage.h          |    2 
src/lib-storage/index/maildir/maildir-sync-index.c       |   41 ++---
src/lib-storage/index/maildir/maildir-sync.c             |   47 ++---
src/lib-storage/index/maildir/maildir-uidlist.c          |   77 +++------
src/lib-storage/index/maildir/maildir-uidlist.h          |    3 
src/lib-storage/index/maildir/maildir-util.c             |    6 
src/lib-storage/index/mbox/mbox-file.c                   |   37 ++--
src/lib-storage/index/mbox/mbox-lock.c                   |   38 ++--
src/lib-storage/index/mbox/mbox-mail.c                   |   49 +++---
src/lib-storage/index/mbox/mbox-save.c                   |   14 -
src/lib-storage/index/mbox/mbox-storage.c                |   54 +++---
src/lib-storage/index/mbox/mbox-storage.h                |    2 
src/lib-storage/index/mbox/mbox-sync-parse.c             |    9 -
src/lib-storage/index/mbox/mbox-sync-update.c            |    8 
src/lib-storage/index/mbox/mbox-sync.c                   |   77 ++++-----
src/lib-storage/index/raw/raw-storage.c                  |   20 +-
src/lib-storage/index/raw/raw-storage.h                  |    2 
src/lib-storage/index/raw/raw-sync.c                     |   10 -
src/lib-storage/index/test-index-fetch.c                 |   14 -
src/lib-storage/mail-storage-private.h                   |    2 
src/plugins/virtual/virtual-config.c                     |   14 -
src/plugins/virtual/virtual-mail.c                       |    2 
src/plugins/virtual/virtual-search.c                     |    2 
src/plugins/virtual/virtual-storage.c                    |   22 +-
src/plugins/virtual/virtual-storage.h                    |    2 
src/plugins/virtual/virtual-sync.c                       |   32 +--

diffs (truncated from 4510 to 300 lines):

diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/cydir/cydir-save.c
--- a/src/lib-storage/index/cydir/cydir-save.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/cydir/cydir-save.c	Sun Feb 07 17:30:24 2010 +0200
@@ -50,8 +50,7 @@ cydir_get_save_path(struct cydir_save_co
 {
 	const char *dir;
 
-	dir = mailbox_list_get_path(ctx->mbox->ibox.box.list,
-				    ctx->mbox->ibox.box.name,
+	dir = mailbox_list_get_path(ctx->mbox->box.list, ctx->mbox->box.name,
 				    MAILBOX_LIST_PATH_TYPE_MAILBOX);
 	return t_strdup_printf("%s/%s.%u", dir, ctx->tmp_basename, num);
 }
@@ -262,8 +261,7 @@ int cydir_transaction_save_commit_pre(st
 				      &_t->changes->saved_uids);
 	_t->changes->uid_validity = ctx->sync_ctx->uid_validity;
 
-	dir = mailbox_list_get_path(ctx->mbox->ibox.box.list,
-				    ctx->mbox->ibox.box.name,
+	dir = mailbox_list_get_path(ctx->mbox->box.list, ctx->mbox->box.name,
 				    MAILBOX_LIST_PATH_TYPE_MAILBOX);
 
 	src_path = t_str_new(256);
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/cydir/cydir-storage.c
--- a/src/lib-storage/index/cydir/cydir-storage.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/cydir/cydir-storage.c	Sun Feb 07 17:30:24 2010 +0200
@@ -54,6 +54,7 @@ cydir_mailbox_alloc(struct mail_storage 
 		    enum mailbox_flags flags)
 {
 	struct cydir_mailbox *mbox;
+	struct index_mailbox_context *ibox;
 	pool_t pool;
 
 	/* cydir can't work without index files */
@@ -61,24 +62,25 @@ cydir_mailbox_alloc(struct mail_storage 
 
 	pool = pool_alloconly_create("cydir mailbox", 1024+512);
 	mbox = p_new(pool, struct cydir_mailbox, 1);
-	mbox->ibox.box = cydir_mailbox;
-	mbox->ibox.box.pool = pool;
-	mbox->ibox.box.storage = storage;
-	mbox->ibox.box.list = list;
-	mbox->ibox.box.mail_vfuncs = &cydir_mail_vfuncs;
-
-	mbox->ibox.save_commit_pre = cydir_transaction_save_commit_pre;
-	mbox->ibox.save_commit_post = cydir_transaction_save_commit_post;
-	mbox->ibox.save_rollback = cydir_transaction_save_rollback;
-
-	index_storage_mailbox_alloc(&mbox->ibox, name, input, flags,
+	mbox->box = cydir_mailbox;
+	mbox->box.pool = pool;
+	mbox->box.storage = storage;
+	mbox->box.list = list;
+	mbox->box.mail_vfuncs = &cydir_mail_vfuncs;
+
+	index_storage_mailbox_alloc(&mbox->box, name, input, flags,
 				    CYDIR_INDEX_PREFIX);
-	mail_index_set_fsync_types(mbox->ibox.box.index,
+	mail_index_set_fsync_types(mbox->box.index,
 				   MAIL_INDEX_SYNC_TYPE_APPEND |
 				   MAIL_INDEX_SYNC_TYPE_EXPUNGE);
 
+	ibox = INDEX_STORAGE_CONTEXT(&mbox->box);
+	ibox->save_commit_pre = cydir_transaction_save_commit_pre;
+	ibox->save_commit_post = cydir_transaction_save_commit_post;
+	ibox->save_rollback = cydir_transaction_save_rollback;
+
 	mbox->storage = (struct cydir_storage *)storage;
-	return &mbox->ibox.box;
+	return &mbox->box;
 }
 
 static int cydir_mailbox_open(struct mailbox *box)
@@ -111,7 +113,7 @@ static int cydir_mailbox_open(struct mai
 					  box->path);
 		return -1;
 	}
-	return index_storage_mailbox_open(box);
+	return index_storage_mailbox_open(box, FALSE);
 }
 
 static int
@@ -222,9 +224,9 @@ static void cydir_notify_changes(struct 
 	struct cydir_mailbox *mbox = (struct cydir_mailbox *)box;
 
 	if (box->notify_callback == NULL)
-		index_mailbox_check_remove_all(&mbox->ibox);
+		index_mailbox_check_remove_all(&mbox->box);
 	else
-		index_mailbox_check_add(&mbox->ibox, mbox->ibox.box.path);
+		index_mailbox_check_add(&mbox->box, mbox->box.path);
 }
 
 static int cydir_list_iter_is_mailbox(struct mailbox_list_iterate_context *ctx
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/cydir/cydir-storage.h
--- a/src/lib-storage/index/cydir/cydir-storage.h	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/cydir/cydir-storage.h	Sun Feb 07 17:30:24 2010 +0200
@@ -14,7 +14,7 @@ struct cydir_storage {
 };
 
 struct cydir_mailbox {
-	struct index_mailbox ibox;
+	struct mailbox box;
 	struct cydir_storage *storage;
 };
 
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/cydir/cydir-sync.c
--- a/src/lib-storage/index/cydir/cydir-sync.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/cydir/cydir-sync.c	Sun Feb 07 17:30:24 2010 +0200
@@ -21,7 +21,7 @@ static string_t *cydir_get_path_prefix(s
 	string_t *path = str_new(default_pool, 256);
 	const char *dir;
 
-	dir = mailbox_list_get_path(mbox->ibox.box.list, mbox->ibox.box.name,
+	dir = mailbox_list_get_path(mbox->box.list, mbox->box.name,
 				    MAILBOX_LIST_PATH_TYPE_MAILBOX);
 	str_append(path, dir);
 	str_append_c(path, '/');
@@ -31,7 +31,7 @@ static void
 static void
 cydir_sync_expunge(struct cydir_sync_context *ctx, uint32_t seq1, uint32_t seq2)
 {
-	struct mailbox *box = &ctx->mbox->ibox.box;
+	struct mailbox *box = &ctx->mbox->box;
 	uint32_t uid;
 
 	if (ctx->path == NULL) {
@@ -60,7 +60,7 @@ cydir_sync_expunge(struct cydir_sync_con
 
 static void cydir_sync_index(struct cydir_sync_context *ctx)
 {
-	struct mailbox *box = &ctx->mbox->ibox.box;
+	struct mailbox *box = &ctx->mbox->box;
 	const struct mail_index_header *hdr;
 	struct mail_index_sync_rec sync_rec;
 	uint32_t seq1, seq2;
@@ -74,7 +74,7 @@ static void cydir_sync_index(struct cydi
 	/* mark the newly seen messages as recent */
 	if (mail_index_lookup_seq_range(ctx->sync_view, hdr->first_recent_uid,
 					hdr->next_uid, &seq1, &seq2)) {
-		index_mailbox_set_recent_seq(&ctx->mbox->ibox, ctx->sync_view,
+		index_mailbox_set_recent_seq(&ctx->mbox->box, ctx->sync_view,
 					     seq1, seq2);
 	}
 
@@ -117,17 +117,17 @@ int cydir_sync_begin(struct cydir_mailbo
 	ctx->mbox = mbox;
 
 	sync_flags = MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY;
-	if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
+	if ((mbox->box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0)
 		sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT;
 	if (!force)
 		sync_flags |= MAIL_INDEX_SYNC_FLAG_REQUIRE_CHANGES;
 
-	ret = mail_index_sync_begin(mbox->ibox.box.index, &ctx->index_sync_ctx,
+	ret = mail_index_sync_begin(mbox->box.index, &ctx->index_sync_ctx,
 				    &ctx->sync_view, &ctx->trans,
 				    sync_flags);
 	if (ret <= 0) {
 		if (ret < 0)
-			mail_storage_set_index_error(&mbox->ibox.box);
+			mail_storage_set_index_error(&mbox->box);
 		i_free(ctx);
 		*ctx_r = NULL;
 		return ret;
@@ -146,7 +146,7 @@ int cydir_sync_finish(struct cydir_sync_
 	*_ctx = NULL;
 	if (success) {
 		if (mail_index_sync_commit(&ctx->index_sync_ctx) < 0) {
-			mail_storage_set_index_error(&ctx->mbox->ibox.box);
+			mail_storage_set_index_error(&ctx->mbox->box);
 			ret = -1;
 		}
 	} else {
@@ -180,7 +180,7 @@ cydir_storage_sync_init(struct mailbox *
 			ret = -1;
 	}
 
-	if (index_mailbox_want_full_sync(&mbox->ibox, flags) && ret == 0)
+	if (index_mailbox_want_full_sync(&mbox->box, flags) && ret == 0)
 		ret = cydir_sync(mbox);
 
 	return index_mailbox_sync_init(box, flags, ret < 0);
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/dbox-common/dbox-mail.c
--- a/src/lib-storage/index/dbox-common/dbox-mail.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/dbox-common/dbox-mail.c	Sun Feb 07 17:30:24 2010 +0200
@@ -148,7 +148,8 @@ dbox_get_cached_metadata(struct dbox_mai
 			 const char **value_r)
 {
 	struct index_mail *imail = &mail->imail;
-	const struct mail_cache_field *cache_fields = imail->ibox->cache_fields;
+	struct index_mailbox_context *ibox =
+		INDEX_STORAGE_CONTEXT(imail->mail.mail.box);
 	struct dbox_file *file;
 	const char *value;
 	string_t *str;
@@ -156,7 +157,7 @@ dbox_get_cached_metadata(struct dbox_mai
 	str = str_new(imail->data_pool, 64);
 	if (mail_cache_lookup_field(imail->trans->cache_view, str,
 				    imail->mail.mail.seq,
-				    cache_fields[cache_field].idx) > 0) {
+				    ibox->cache_fields[cache_field].idx) > 0) {
 		*value_r = str_c(str);
 		return 0;
 	}
@@ -167,7 +168,7 @@ dbox_get_cached_metadata(struct dbox_mai
 	value = dbox_file_metadata_get(file, key);
 	if (value == NULL)
 		value = "";
-	index_mail_cache_add_idx(imail, cache_fields[cache_field].idx,
+	index_mail_cache_add_idx(imail, ibox->cache_fields[cache_field].idx,
 				 value, strlen(value)+1);
 	*value_r = value;
 	return 0;
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/dbox-common/dbox-storage.c
--- a/src/lib-storage/index/dbox-common/dbox-storage.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/dbox-common/dbox-storage.c	Sun Feb 07 17:30:24 2010 +0200
@@ -39,16 +39,15 @@ uint32_t dbox_get_uidvalidity_next(struc
 
 void dbox_notify_changes(struct mailbox *box)
 {
-	struct index_mailbox *ibox = (struct index_mailbox *)box;
 	const char *dir, *path;
 
 	if (box->notify_callback == NULL)
-		index_mailbox_check_remove_all(ibox);
+		index_mailbox_check_remove_all(box);
 	else {
 		dir = mailbox_list_get_path(box->list, box->name,
 					    MAILBOX_LIST_PATH_TYPE_INDEX);
 		path = t_strdup_printf("%s/"DBOX_INDEX_PREFIX".log", dir);
-		index_mailbox_check_add(ibox, path);
+		index_mailbox_check_add(box, path);
 	}
 }
 
@@ -86,7 +85,7 @@ static int dbox_mailbox_create_indexes(s
 	mailbox_list_get_dir_permissions(box->list, NULL, &mode, &gid, &origin);
 	if (mkdir_parents_chgrp(box->path, mode, gid, origin) == 0) {
 		/* create indexes immediately with the dbox header */
-		if (index_storage_mailbox_open(box) < 0)
+		if (index_storage_mailbox_open(box, FALSE) < 0)
 			return -1;
 		if (storage->v.mailbox_create_indexes(box, update) < 0)
 			return -1;
@@ -109,7 +108,7 @@ int dbox_mailbox_open(struct mailbox *bo
 	}
 
 	if (dbox_cleanup_if_exists(box->list, box->path)) {
-		return index_storage_mailbox_open(box);
+		return index_storage_mailbox_open(box, FALSE);
 	} else if (errno == ENOENT) {
 		if (strcmp(box->name, "INBOX") == 0 &&
 		    (box->list->ns->flags & NAMESPACE_FLAG_INBOX) != 0) {
@@ -117,7 +116,7 @@ int dbox_mailbox_open(struct mailbox *bo
 			if (dbox_mailbox_create_indexes(box, NULL) < 0)
 				return -1;
 			return box->opened ? 0 :
-				index_storage_mailbox_open(box);
+				index_storage_mailbox_open(box, FALSE);
 		}
 
 		mail_storage_set_error(box->storage, MAIL_ERROR_NOTFOUND,
@@ -163,7 +162,7 @@ int dbox_mailbox_create(struct mailbox *
 	    (box->list->props & MAILBOX_LIST_PROP_NO_NOSELECT) == 0)
 		return 0;
 
-	if (index_storage_mailbox_open(box) < 0)
+	if (index_storage_mailbox_open(box, FALSE) < 0)
 		return -1;
 	if (storage->v.mailbox_create_indexes(box, update) < 0)
 		return -1;
diff -r 7309b5c84ca9 -r 56b1d4dd9c7d src/lib-storage/index/dbox-common/dbox-sync-rebuild.c
--- a/src/lib-storage/index/dbox-common/dbox-sync-rebuild.c	Sun Feb 07 16:27:18 2010 +0200
+++ b/src/lib-storage/index/dbox-common/dbox-sync-rebuild.c	Sun Feb 07 17:30:24 2010 +0200
@@ -84,21 +84,20 @@ void dbox_sync_rebuild_index_metadata(st
 }
 
 struct dbox_sync_rebuild_context *
-dbox_sync_index_rebuild_init(struct index_mailbox *ibox,
+dbox_sync_index_rebuild_init(struct mailbox *box,
 			     struct mail_index_view *view,
 			     struct mail_index_transaction *trans)
 {
-	struct mailbox *box = &ibox->box;
 	struct dbox_sync_rebuild_context *ctx;
 	const char *index_dir;
 	enum mail_index_open_flags open_flags = MAIL_INDEX_OPEN_FLAG_READONLY;
 
 	ctx = i_new(struct dbox_sync_rebuild_context, 1);
-	ctx->ibox = ibox;
+	ctx->box = box;
 	ctx->view = view;
 	ctx->trans = trans;
 	mail_index_reset(ctx->trans);
-	index_mailbox_reset_uidvalidity(ibox);
+	index_mailbox_reset_uidvalidity(box);
 	mail_index_ext_lookup(box->index, "cache", &ctx->cache_ext_id);
 


More information about the dovecot-cvs mailing list