mail-index-sync-update.c revision 215daa7d5bf9a849849586490fd6fdd28a724dd8
8e47d6ce64ae5a3392b4d92867b2a83bd0dc9bbeEugen Kuksa/* Copyright (C) 2004 Timo Sirainen */
a847d9812b328c048773e705606b10875a929034Eugen Kuksavoid mail_index_header_update_counts(struct mail_index_header *hdr,
a847d9812b328c048773e705606b10875a929034Eugen Kuksa if (((old_flags ^ new_flags) & MAIL_SEEN) != 0) {
a847d9812b328c048773e705606b10875a929034Eugen Kuksa /* different seen-flag */
a847d9812b328c048773e705606b10875a929034Eugen Kuksa if (((old_flags ^ new_flags) & MAIL_DELETED) != 0) {
a847d9812b328c048773e705606b10875a929034Eugen Kuksa /* different deleted-flag */
a847d9812b328c048773e705606b10875a929034Eugen Kuksavoid mail_index_header_update_lowwaters(struct mail_index_header *hdr,
d51cee8257d50d1f2d7c0818d968b32096f6b795Tim Reddehasestatic void mail_index_sync_update_expunges(struct mail_index_update_ctx *ctx,
0abeb43875687e94f2d551053ad09eebeff1f7c9Tim Reddehase mail_index_header_update_counts(&ctx->hdr, rec->flags, 0);
d51cee8257d50d1f2d7c0818d968b32096f6b795Tim Reddehasestatic void mail_index_sync_update_flags(struct mail_index_update_ctx *ctx,
0abeb43875687e94f2d551053ad09eebeff1f7c9Tim Reddehase for (i = 0; i < INDEX_KEYWORDS_BYTE_COUNT; i++) {
81a6387a4ab56a24194ecbabd6609c6bcca568b7Tim Reddehase keyword_mask[i] = ~syncrec->remove_keywords[i];
81a6387a4ab56a24194ecbabd6609c6bcca568b7Tim Reddehase rec = &ctx->index->map->records[syncrec->seq1-1];
81a6387a4ab56a24194ecbabd6609c6bcca568b7Tim Reddehase end = rec + (syncrec->seq2 - syncrec->seq1) + 1;
511ba3e3d7deb4a13a03ce522a99a0395acc61b7Tim Reddehase rec->flags = (rec->flags & flag_mask) | syncrec->add_flags;
2794bc43ef90861870dcc134505d87b291dfe5c2Tim Reddehase for (i = 0; i < INDEX_KEYWORDS_BYTE_COUNT; i++) {
a847d9812b328c048773e705606b10875a929034Eugen Kuksa mail_index_header_update_lowwaters(&ctx->hdr, rec);
419f986abb76f6fce54b71e17f52a1deaa06dbd6Tim Reddehasestatic int mail_index_grow(struct mail_index *index, unsigned int count)
d9a3935fa80ce492e782d17ec22825d1708dea97Tim Reddehase map->records = buffer_get_modifyable_data(map->buffer, NULL);
d9a3935fa80ce492e782d17ec22825d1708dea97Tim Reddehase (map->records_count + count) * sizeof(struct mail_index_record);
80021fb6bde14c39046950cdbaaadf767d173f94Tim Reddehase /* when we grow fast, do it exponentially */
d9a3935fa80ce492e782d17ec22825d1708dea97Tim Reddehase (map->records_count + count) * sizeof(struct mail_index_record);
d9a3935fa80ce492e782d17ec22825d1708dea97Tim Reddehase if (file_set_size(index->fd, (off_t)size) < 0)
d9a3935fa80ce492e782d17ec22825d1708dea97Tim Reddehase return mail_index_set_syscall_error(index, "file_set_size()");
unsigned int count)
for (i = 0; i < count; i++) {
unsigned int append_count;
unsigned int lock_id;
if (!changed) {
if (src_idx == 0) {
if (src_idx != 0) {
ret = 0;
if (append_count > 0)
return ret;