Mercurial > dovecot > core-2.2
changeset 11071:d61ffd81124c HEAD
virtual: Small code cleanup.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 05 Apr 2010 09:13:55 +0300 |
parents | bd2ac7e2fc40 |
children | 7d76f4a9c5c8 |
files | src/plugins/virtual/virtual-sync.c |
diffstat | 1 files changed, 15 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-sync.c Mon Apr 05 08:59:04 2010 +0300 +++ b/src/plugins/virtual/virtual-sync.c Mon Apr 05 09:13:55 2010 +0300 @@ -1071,21 +1071,22 @@ { uint32_t virtual_ext_id = ctx->mbox->virtual_ext_id; struct virtual_sync_mail *vmails; - struct virtual_backend_box *bbox, *const *bboxes; + struct virtual_backend_box *bbox; struct virtual_backend_uidmap *uidmap = NULL; struct virtual_add_record add_rec; const struct virtual_mail_index_record *vrec; const void *data; bool expunged; - uint32_t i, vseq, vuid, messages, count; + uint32_t i, vseq, vuid, messages; unsigned int j = 0, uidmap_count = 0; messages = mail_index_view_get_messages_count(ctx->sync_view); + if (messages == 0) + return; /* sort the messages in current view by their backend mailbox and real UID */ - vmails = messages == 0 ? NULL : - i_new(struct virtual_sync_mail, messages); + vmails = i_new(struct virtual_sync_mail, messages); for (vseq = 1; vseq <= messages; vseq++) { mail_index_lookup_ext(ctx->sync_view, vseq, virtual_ext_id, &data, &expunged); @@ -1149,9 +1150,18 @@ add_rec.rec.real_uid = uidmap[j].real_uid; array_append(&ctx->all_adds, &add_rec, 1); } +} + +static void virtual_sync_new_backend_boxes(struct virtual_sync_context *ctx) +{ + struct virtual_backend_box *const *bboxes; + struct virtual_add_record add_rec; + struct virtual_backend_uidmap *uidmap; + unsigned int i, j, count, uidmap_count; /* if there are any mailboxes we didn't yet sync, add new messages in them */ + memset(&add_rec, 0, sizeof(add_rec)); bboxes = array_get(&ctx->mbox->backend_boxes, &count); for (i = 0; i < count; i++) { if (bboxes[i]->sync_seen) @@ -1391,6 +1401,7 @@ sync all flags */ ctx->mbox->uids_mapped = TRUE; virtual_sync_backend_map_uids(ctx); + virtual_sync_new_backend_boxes(ctx); } virtual_sync_backend_add_new(ctx); array_free(&ctx->all_adds);