dovecot-2.0-sslstream: lib-storage: *_mailboxes don't descend fr...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 03:00:53 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/56b1d4dd9c7d
changeset: 10661: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