Mercurial > dovecot > core-2.2
changeset 3825:a983412e1976 HEAD
Changed mail_index_view_sync_next() to return struct
mail_index_view_sync_rec records which only contain the type and UID range.
Makes it clearer that the caller won't get anything else, and flag updates
now don't need to update add_flags/remove_flags fields.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 06 Jan 2006 19:37:30 +0200 |
parents | 3e756ea0474b |
children | 20430dbf04d4 |
files | src/lib-index/mail-index-sync-private.h src/lib-index/mail-index-sync.c src/lib-index/mail-index-view-sync.c src/lib-index/mail-index.h src/lib-storage/index/index-sync.c |
diffstat | 5 files changed, 21 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync-private.h Fri Jan 06 19:30:26 2006 +0200 +++ b/src/lib-index/mail-index-sync-private.h Fri Jan 06 19:37:30 2006 +0200 @@ -70,13 +70,6 @@ void mail_index_sync_replace_map(struct mail_index_sync_map_ctx *ctx, struct mail_index_map *map); -void -mail_index_sync_get_expunge(struct mail_index_sync_rec *rec, - const struct mail_transaction_expunge *exp); -void -mail_index_sync_get_update(struct mail_index_sync_rec *rec, - const struct mail_transaction_flag_update *update); - void mail_index_sync_init_expunge_handlers(struct mail_index_sync_map_ctx *ctx); void mail_index_sync_deinit_expunge_handlers(struct mail_index_sync_map_ctx *ctx);
--- a/src/lib-index/mail-index-sync.c Fri Jan 06 19:30:26 2006 +0200 +++ b/src/lib-index/mail-index-sync.c Fri Jan 06 19:37:30 2006 +0200 @@ -430,7 +430,7 @@ return 1; } -void +static void mail_index_sync_get_expunge(struct mail_index_sync_rec *rec, const struct mail_transaction_expunge *exp) { @@ -439,7 +439,7 @@ rec->uid2 = exp->uid2; } -void +static void mail_index_sync_get_update(struct mail_index_sync_rec *rec, const struct mail_transaction_flag_update *update) {
--- a/src/lib-index/mail-index-view-sync.c Fri Jan 06 19:30:26 2006 +0200 +++ b/src/lib-index/mail-index-view-sync.c Fri Jan 06 19:37:30 2006 +0200 @@ -365,7 +365,7 @@ static int mail_index_view_sync_get_rec(struct mail_index_view_sync_ctx *ctx, - struct mail_index_sync_rec *rec) + struct mail_index_view_sync_rec *rec) { const struct mail_transaction_header *hdr = ctx->hdr; const void *data = ctx->data; @@ -383,8 +383,11 @@ CONST_PTR_OFFSET(data, ctx->data_offset); /* data contains mail_transaction_expunge[] */ + rec->type = MAIL_INDEX_SYNC_TYPE_EXPUNGE; + rec->uid1 = exp->uid1; + rec->uid2 = exp->uid2; + ctx->data_offset += sizeof(*exp); - mail_index_sync_get_expunge(rec, exp); break; } case MAIL_TRANSACTION_FLAG_UPDATE: { @@ -403,7 +406,10 @@ update = CONST_PTR_OFFSET(data, ctx->data_offset); } - mail_index_sync_get_update(rec, update); + + rec->type = MAIL_INDEX_SYNC_TYPE_FLAGS; + rec->uid1 = update->uid1; + rec->uid2 = update->uid2; break; } case MAIL_TRANSACTION_KEYWORD_UPDATE: { @@ -421,9 +427,6 @@ } uids = CONST_PTR_OFFSET(data, ctx->data_offset); - /* FIXME: rec->keyword_idx isn't set, but no-one cares - currently. perhaps the whole view syncing API should just - be returning type and uid range.. */ rec->type = MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD; rec->uid1 = uids[0]; rec->uid2 = uids[1]; @@ -449,7 +452,7 @@ } int mail_index_view_sync_next(struct mail_index_view_sync_ctx *ctx, - struct mail_index_sync_rec *sync_rec) + struct mail_index_view_sync_rec *sync_rec) { int ret;
--- a/src/lib-index/mail-index.h Fri Jan 06 19:30:26 2006 +0200 +++ b/src/lib-index/mail-index.h Fri Jan 06 19:37:30 2006 +0200 @@ -135,6 +135,13 @@ unsigned int keyword_idx; }; +struct mail_index_view_sync_rec { + uint32_t uid1, uid2; + /* keyword appends and removes are packed into one and same + MAIL_INDEX_SYNC_TYPE_KEYWORD_ADD */ + enum mail_index_sync_type type; +}; + struct mail_index; struct mail_index_map; struct mail_index_view; @@ -254,7 +261,7 @@ struct mail_index_view_sync_ctx **ctx_r); /* Returns -1 if error, 0 if sync is finished, 1 if record was filled. */ int mail_index_view_sync_next(struct mail_index_view_sync_ctx *ctx, - struct mail_index_sync_rec *sync_rec); + struct mail_index_view_sync_rec *sync_rec); const uint32_t * mail_index_view_sync_get_expunges(struct mail_index_view_sync_ctx *ctx, unsigned int *count_r);
--- a/src/lib-storage/index/index-sync.c Fri Jan 06 19:30:26 2006 +0200 +++ b/src/lib-storage/index/index-sync.c Fri Jan 06 19:37:30 2006 +0200 @@ -173,7 +173,7 @@ { struct index_mailbox_sync_context *ctx = (struct index_mailbox_sync_context *)_ctx; - struct mail_index_sync_rec sync; + struct mail_index_view_sync_rec sync; int ret; if (ctx->failed)