return ret;
}
+#define MAIL_INDEX_VIEW_VISIBLE_SYNC_MASK \
+ (MAIL_TRANSACTION_EXPUNGE | MAIL_TRANSACTION_APPEND | \
+ MAIL_TRANSACTION_FLAG_UPDATE)
+
int mail_index_view_sync_begin(struct mail_index_view *view,
enum mail_index_sync_type sync_mask,
struct mail_index_view_sync_ctx **ctx_r)
/* only flags, appends and expunges can be left to be synced later */
want_mask = mail_transaction_type_mask_get(sync_mask);
+ i_assert((want_mask & ~MAIL_INDEX_VIEW_VISIBLE_SYNC_MASK) == 0);
mask = want_mask |
(MAIL_TRANSACTION_TYPE_MASK ^
- (MAIL_TRANSACTION_EXPUNGE | MAIL_TRANSACTION_APPEND |
- MAIL_TRANSACTION_FLAG_UPDATE));
+ MAIL_INDEX_VIEW_VISIBLE_SYNC_MASK);
if (mail_transaction_log_view_set(view->log_view,
view->log_file_seq,
if (ret < 0)
return -1;
+ ctx->hdr = NULL;
ctx->last_read = TRUE;
return 1;
}
for (;;) {
file = view->cur;
+ if (file == NULL)
+ return 0;
view->prev_file_seq = file->hdr.file_seq;
view->prev_file_offset = view->cur_offset;
view->cur = file->next;
view->cur_offset = sizeof(struct mail_transaction_log_header);
-
- if (view->cur == NULL)
- return 0;
}
data = buffer_get_data(file->buffer, &file_size);