From: Timo Sirainen Date: Thu, 30 Jul 2009 23:30:15 +0000 (-0400) Subject: index-storage: Code cleanup. X-Git-Tag: 2.0.alpha1~351 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ced118ac5caf6fe83d34339c2c65c63b2aa768ac;p=thirdparty%2Fdovecot%2Fcore.git index-storage: Code cleanup. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/cydir/cydir-sync.c b/src/lib-storage/index/cydir/cydir-sync.c index b0a1a31f28..2b69132a42 100644 --- a/src/lib-storage/index/cydir/cydir-sync.c +++ b/src/lib-storage/index/cydir/cydir-sync.c @@ -117,7 +117,7 @@ int cydir_sync_begin(struct cydir_mailbox *mbox, ctx->mbox = mbox; sync_flags = MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY; - if (!mbox->ibox.keep_recent) + if ((mbox->ibox.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; diff --git a/src/lib-storage/index/dbox/dbox-sync.c b/src/lib-storage/index/dbox/dbox-sync.c index e1026b1953..28611ac0d3 100644 --- a/src/lib-storage/index/dbox/dbox-sync.c +++ b/src/lib-storage/index/dbox/dbox-sync.c @@ -245,7 +245,7 @@ int dbox_sync_begin(struct dbox_mailbox *mbox, enum dbox_sync_flags flags, ctx->mbox = mbox; ctx->flags = flags; - if (!mbox->ibox.keep_recent) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; if (!rebuild && (flags & DBOX_SYNC_FLAG_FORCE) == 0) sync_flags |= MAIL_INDEX_SYNC_FLAG_REQUIRE_CHANGES; diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 964881588d..8a31a3535e 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -483,8 +483,6 @@ void index_storage_mailbox_alloc(struct index_mailbox *ibox, const char *name, ibox->index_flags = MAIL_INDEX_OPEN_FLAG_CREATE | mail_storage_settings_to_index_flags(box->storage->set); - ibox->keep_recent = (flags & MAILBOX_FLAG_KEEP_RECENT) != 0; - ibox->keep_locked = (flags & MAILBOX_FLAG_KEEP_LOCKED) != 0; ibox->next_lock_notify = time(NULL) + LOCK_NOTIFY_INTERVAL; ibox->commit_log_file_seq = 0; diff --git a/src/lib-storage/index/index-storage.h b/src/lib-storage/index/index-storage.h index 70d0b20aa6..cffece56ed 100644 --- a/src/lib-storage/index/index-storage.h +++ b/src/lib-storage/index/index-storage.h @@ -50,8 +50,6 @@ struct index_mailbox { /* we've discovered there aren't enough permissions to modify mailbox */ unsigned int backend_readonly:1; - unsigned int keep_recent:1; - unsigned int keep_locked:1; unsigned int sent_diskspace_warning:1; unsigned int sent_readonly_flags_warning:1; unsigned int notify_pending:1; diff --git a/src/lib-storage/index/index-sync.c b/src/lib-storage/index/index-sync.c index 8aa8bb91fe..acad07159c 100644 --- a/src/lib-storage/index/index-sync.c +++ b/src/lib-storage/index/index-sync.c @@ -326,7 +326,8 @@ int index_mailbox_sync_deinit(struct mailbox_sync_context *_ctx, } index_mailbox_expunge_unseen_recent(ctx); - if (ibox->keep_recent && ibox->box.opened) { + if ((ibox->box.flags & MAILBOX_FLAG_KEEP_RECENT) != 0 && + ibox->box.opened) { /* mailbox syncing didn't necessarily update our recent state */ hdr = mail_index_get_header(ibox->view); if (hdr->first_recent_uid > ibox->recent_flags_prev_uid) { diff --git a/src/lib-storage/index/maildir/maildir-save.c b/src/lib-storage/index/maildir/maildir-save.c index 65ef6916f2..0528b1c143 100644 --- a/src/lib-storage/index/maildir/maildir-save.c +++ b/src/lib-storage/index/maildir/maildir-save.c @@ -678,7 +678,7 @@ maildir_save_sync_index(struct maildir_save_context *ctx) index_mailbox_set_recent_uid(&mbox->ibox, uid); } - if (!mbox->ibox.keep_recent) { + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) { /* maildir_sync_index() dropped recent flags from existing messages. we'll still need to drop recent flags from these newly added messages. */ diff --git a/src/lib-storage/index/maildir/maildir-sync-index.c b/src/lib-storage/index/maildir/maildir-sync-index.c index 766fefa0c1..8ec6741423 100644 --- a/src/lib-storage/index/maildir/maildir-sync-index.c +++ b/src/lib-storage/index/maildir/maildir-sync-index.c @@ -225,7 +225,8 @@ int maildir_sync_index_begin(struct maildir_mailbox *mbox, sync_flags = 0; /* don't drop recent messages if we're saving messages */ - if (!mbox->ibox.keep_recent && maildir_sync_ctx != NULL) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0 && + maildir_sync_ctx != NULL) sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; if (mail_index_sync_begin(mbox->ibox.index, &sync_ctx, &view, &trans, diff --git a/src/lib-storage/index/maildir/maildir-sync.c b/src/lib-storage/index/maildir/maildir-sync.c index 0918e43af1..96ae6a8def 100644 --- a/src/lib-storage/index/maildir/maildir-sync.c +++ b/src/lib-storage/index/maildir/maildir-sync.c @@ -420,7 +420,8 @@ maildir_scan_dir(struct maildir_sync_context *ctx, bool new_dir, bool final) dest = t_str_new(1024); move_new = new_dir && !mailbox_is_readonly(&ctx->mbox->ibox.box) && - !ctx->mbox->ibox.keep_recent && ctx->locked; + (ctx->mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0 && + ctx->locked; errno = 0; for (; (dp = readdir(dirp)) != NULL; errno = 0) { @@ -669,11 +670,11 @@ static bool have_recent_messages(struct maildir_sync_context *ctx) static int maildir_sync_get_changes(struct maildir_sync_context *ctx, bool *new_changed_r, bool *cur_changed_r) { + struct maildir_mailbox *mbox = ctx->mbox; enum mail_index_sync_flags flags = 0; bool undirty = (ctx->flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0; - if (maildir_sync_quick_check(ctx->mbox, undirty, - ctx->new_dir, ctx->cur_dir, + if (maildir_sync_quick_check(mbox, undirty, ctx->new_dir, ctx->cur_dir, new_changed_r, cur_changed_r) < 0) return -1; @@ -681,7 +682,7 @@ static int maildir_sync_get_changes(struct maildir_sync_context *ctx, return 1; if (have_recent_messages(ctx)) { - if (!ctx->mbox->ibox.keep_recent) { + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) { *new_changed_r = TRUE; return 1; } else if (*new_changed_r) { @@ -694,10 +695,10 @@ static int maildir_sync_get_changes(struct maildir_sync_context *ctx, } } - if (!ctx->mbox->ibox.keep_recent) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; - return mail_index_sync_have_any(ctx->mbox->ibox.index, flags) ? 1 : 0; + return mail_index_sync_have_any(mbox->ibox.index, flags) ? 1 : 0; } static int maildir_sync_context(struct maildir_sync_context *ctx, bool forced, @@ -934,7 +935,7 @@ maildir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) } T_END; i_assert(!maildir_uidlist_is_locked(mbox->uidlist) || - mbox->ibox.keep_locked); + (box->flags & MAILBOX_FLAG_KEEP_LOCKED) != 0); if (lost_files) { /* lost some files from new/, see if thery're in cur/ */ diff --git a/src/lib-storage/index/mbox/mbox-file.c b/src/lib-storage/index/mbox/mbox-file.c index 46c5b3e97b..9149cbc325 100644 --- a/src/lib-storage/index/mbox/mbox-file.c +++ b/src/lib-storage/index/mbox/mbox-file.c @@ -95,7 +95,8 @@ static void mbox_file_fix_atime(struct mbox_mailbox *mbox) struct utimbuf buf; struct stat st; - if (mbox->ibox.recent_flags_count > 0 && mbox->ibox.keep_recent && + if (mbox->ibox.recent_flags_count > 0 && + (mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) != 0 && mbox->mbox_fd != -1 && !mbox->ibox.backend_readonly) { /* we've seen recent messages which we want to keep recent. keep file's atime lower than mtime so \Marked status diff --git a/src/lib-storage/index/mbox/mbox-sync-private.h b/src/lib-storage/index/mbox/mbox-sync-private.h index 3b345d553c..ad8dc51656 100644 --- a/src/lib-storage/index/mbox/mbox-sync-private.h +++ b/src/lib-storage/index/mbox/mbox-sync-private.h @@ -138,6 +138,7 @@ struct mbox_sync_context { unsigned int first_mail_crlf_expunged:1; /* global flags: */ + unsigned int keep_recent:1; unsigned int delay_writes:1; unsigned int renumber_uids:1; unsigned int moved_offsets:1; diff --git a/src/lib-storage/index/mbox/mbox-sync-update.c b/src/lib-storage/index/mbox/mbox-sync-update.c index a45ee2bd28..bc250570ff 100644 --- a/src/lib-storage/index/mbox/mbox-sync-update.c +++ b/src/lib-storage/index/mbox/mbox-sync-update.c @@ -382,7 +382,7 @@ static void mbox_sync_update_header_real(struct mbox_sync_mail_context *ctx) { i_assert(ctx->mail.uid != 0 || ctx->mail.pseudo); - if (!ctx->sync_ctx->mbox->ibox.keep_recent) + if (!ctx->sync_ctx->keep_recent) ctx->mail.flags &= ~MAIL_RECENT; mbox_sync_update_status(ctx); @@ -412,7 +412,7 @@ mbox_sync_update_header_from_real(struct mbox_sync_mail_context *ctx, (ctx->mail.flags & MAIL_RECENT) != 0) { ctx->mail.flags = (ctx->mail.flags & ~STATUS_FLAGS_MASK) | (mail->flags & STATUS_FLAGS_MASK); - if (!ctx->sync_ctx->mbox->ibox.keep_recent) + if (!ctx->sync_ctx->keep_recent) ctx->mail.flags &= ~MAIL_RECENT; mbox_sync_update_status(ctx); } diff --git a/src/lib-storage/index/mbox/mbox-sync.c b/src/lib-storage/index/mbox/mbox-sync.c index 741f0aef2e..f7019f11a2 100644 --- a/src/lib-storage/index/mbox/mbox-sync.c +++ b/src/lib-storage/index/mbox/mbox-sync.c @@ -157,7 +157,7 @@ mbox_sync_read_next_mail(struct mbox_sync_context *sync_ctx, if ((mail_ctx->mail.flags & MAIL_RECENT) != 0 && !mail_ctx->mail.pseudo) { - if (!sync_ctx->mbox->ibox.keep_recent) { + if (!sync_ctx->keep_recent) { /* need to add 'O' flag to Status-header */ mail_ctx->need_rewrite = TRUE; } @@ -913,7 +913,7 @@ static int mbox_sync_partial_seek_next(struct mbox_sync_context *sync_ctx, return 1; if (sync_ctx->hdr->first_recent_uid <= next_uid && - !sync_ctx->mbox->ibox.keep_recent) { + !sync_ctx->keep_recent) { /* we'll need to rewrite Status: O headers */ return 1; } @@ -922,7 +922,7 @@ static int mbox_sync_partial_seek_next(struct mbox_sync_context *sync_ctx, if (sync_ctx->hdr->first_recent_uid < sync_ctx->hdr->next_uid && (uid > sync_ctx->hdr->first_recent_uid || uid == 0) && - !sync_ctx->mbox->ibox.keep_recent) { + !sync_ctx->keep_recent) { /* we'll need to rewrite Status: O headers */ uid = sync_ctx->hdr->first_recent_uid; } @@ -1469,7 +1469,7 @@ static int mbox_sync_update_index_header(struct mbox_sync_context *sync_ctx) } mail_index_view_close(&view); - first_recent_uid = !sync_ctx->mbox->ibox.keep_recent ? + first_recent_uid = !sync_ctx->keep_recent ? sync_ctx->next_uid : sync_ctx->last_nonrecent_uid + 1; if (sync_ctx->hdr->first_recent_uid < first_recent_uid) { mail_index_update_header(sync_ctx->t, @@ -1771,7 +1771,7 @@ again: } sync_flags = 0; - if (!mbox->ibox.keep_recent) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; if ((flags & MBOX_SYNC_REWRITE) != 0) sync_flags |= MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY; @@ -1792,7 +1792,7 @@ again: return ret; } - if (!mbox->ibox.keep_recent) { + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) { /* see if we need to drop recent flags */ sync_ctx.hdr = mail_index_get_header(sync_view); if (sync_ctx.hdr->first_recent_uid < sync_ctx.hdr->next_uid) @@ -1813,6 +1813,8 @@ again: memset(&sync_ctx, 0, sizeof(sync_ctx)); sync_ctx.mbox = mbox; + sync_ctx.keep_recent = + (mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) != 0; sync_ctx.hdr = mail_index_get_header(sync_view); sync_ctx.from_line = str_new(default_pool, 256); @@ -1888,7 +1890,7 @@ again: sync_ctx.t = NULL; sync_ctx.index_sync_ctx = NULL; - if (ret == 0 && mbox->mbox_fd != -1 && mbox->ibox.keep_recent && + if (ret == 0 && mbox->mbox_fd != -1 && sync_ctx.keep_recent && !sync_ctx.mbox->ibox.backend_readonly) { /* try to set atime back to its original value */ struct utimbuf buf; diff --git a/src/lib-storage/index/raw/raw-sync.c b/src/lib-storage/index/raw/raw-sync.c index f2f77e03cb..e50ddb5503 100644 --- a/src/lib-storage/index/raw/raw-sync.c +++ b/src/lib-storage/index/raw/raw-sync.c @@ -18,7 +18,7 @@ static int raw_sync(struct raw_mailbox *mbox) sync_flags = MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY | MAIL_INDEX_SYNC_FLAG_REQUIRE_CHANGES; - if (!mbox->ibox.keep_recent) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; ret = mail_index_sync_begin(mbox->ibox.index, &index_sync_ctx, diff --git a/src/plugins/virtual/virtual-sync.c b/src/plugins/virtual/virtual-sync.c index 613c0f326a..8b80915ab0 100644 --- a/src/plugins/virtual/virtual-sync.c +++ b/src/plugins/virtual/virtual-sync.c @@ -1448,7 +1448,7 @@ static int virtual_sync(struct virtual_mailbox *mbox, index_sync_flags = MAIL_INDEX_SYNC_FLAG_FLUSH_DIRTY | MAIL_INDEX_SYNC_FLAG_AVOID_FLAG_UPDATES; - if (!mbox->ibox.keep_recent) + if ((mbox->ibox.box.flags & MAILBOX_FLAG_KEEP_RECENT) == 0) index_sync_flags |= MAIL_INDEX_SYNC_FLAG_DROP_RECENT; ret = mail_index_sync_begin(ctx->index, &ctx->index_sync_ctx,