mail-index-transaction-finish.c revision e20e638805c4bd54e039891a3e92760b1dfa189a
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2003-2009 Dovecot authors, see the included COPYING file */
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz#include "mail-index-transaction-private.h"
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarzint mail_transaction_expunge_guid_cmp(const struct mail_transaction_expunge_guid *e1,
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz const struct mail_transaction_expunge_guid *e2)
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarzvoid mail_index_transaction_sort_expunges(struct mail_index_transaction *t)
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz array_sort(&t->expunges, mail_transaction_expunge_guid_cmp);
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarzext_reset_update_atomic(struct mail_index_transaction *t,
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz uint32_t ext_id, uint32_t expected_reset_id)
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz if (!mail_index_map_get_ext_idx(t->view->index->map, ext_id, &idx)) {
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz /* new extension */
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz map_ext = array_idx(&t->view->index->map->extensions, idx);
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz /* ignore this extension update */
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz mail_index_ext_set_reset_id(t, ext_id, 0);
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz array_idx_set(&t->ext_reset_ids, ext_id, &reset_id);
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz /* reseting existing data is optional */
51ed197520dd9ea534fbc3bc1790ebe3cb5421e2Michael M Slusarz reset = array_idx_modifiable(&t->ext_resets, ext_id);
unsigned int update_idx,
unsigned int i, keep_count;
return update_idx;
unsigned int i, count;
if (!t->drop_unnecessary_flag_updates)
for (i = 0; i < count; ) {
u = &updates[i];
if (t->min_flagupdate_seq == 0) {
static uint32_t
unsigned int i, count;
for (i = 0; i < count; i++) {
static uint32_t
seq1++;
seq1++;
uid1++;
return uid1;
unsigned int i, count;
for (i = 0; i < count; i++) {
count++;
if (count == 0)
dest++;
MAIL_INDEX_SYNC_HANDLER_HEAD) <= 0)
if (t->max_modseq != 0)
if (t->min_highest_modseq != 0)