mbox-sync-private.h revision e05ea8311ae16687295048e88ca205dfe29fbcbf
25757faf029c369a8318349dafe952e2358df1d8Timo SirainenARRAY_DEFINE_TYPE(sync_recs, struct mail_index_sync_rec);
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen/* kludgy. swap MAIL_RECENT with MBOX_NONRECENT_KLUDGE when writing Status
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen header, because 'O' flag means non-recent but internally we want to use
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen recent flag. */
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen#define STATUS_FLAGS_MASK (MAIL_SEEN|MBOX_NONRECENT_KLUDGE)
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainen#define XSTATUS_FLAGS_MASK (MAIL_ANSWERED|MAIL_FLAGGED|MAIL_DRAFT|MAIL_DELETED)
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenextern struct mbox_flag_type mbox_status_flags[];
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenextern struct mbox_flag_type mbox_xstatus_flags[];
b44650b0f48a4b5f0dc240ed836833a00b643b9fTimo Sirainen /* following variables have a bit overloaded functionality:
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen a) space <= 0 : offset points to beginning of headers. space is the
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen amount of space missing that is required to be able to rewrite
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen b) space > 0 : offset points to beginning of whitespace that can
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen be removed. space is the amount of data that can be removed from
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen there. note that the message may contain more whitespace
430c0b0c370bebeeceba2e206be76bc134742f41Timo Sirainen elsewhere. */
b44650b0f48a4b5f0dc240ed836833a00b643b9fTimo Sirainen size_t header_first_change, header_last_change;
446e518e4fe86ff40e33543445f4e99edf840a21Timo Sirainen /* header state: */
b44650b0f48a4b5f0dc240ed836833a00b643b9fTimo Sirainen /* mail state: */
a3dd97fb6d92a89c3de0597fed2d4b044c7aeb84Timo Sirainen /* per-mail pool */
f968e62caa52a8924bd05ebf76ff515b5c18e17bTimo Sirainen /* used for mails[].keywords */
a3dd97fb6d92a89c3de0597fed2d4b044c7aeb84Timo Sirainen uint32_t prev_msg_uid, next_uid, idx_next_uid;
f968e62caa52a8924bd05ebf76ff515b5c18e17bTimo Sirainen /* global flags: */
4ed1b49d815ec41a5e4b6a23d23e94b958da1923Timo Sirainenint mbox_sync(struct mbox_mailbox *mbox, enum mbox_sync_flags flags);
a3dd97fb6d92a89c3de0597fed2d4b044c7aeb84Timo Sirainenint mbox_sync_has_changed(struct mbox_mailbox *mbox, bool leave_dirty);
4ed1b49d815ec41a5e4b6a23d23e94b958da1923Timo Sirainenvoid mbox_sync_parse_next_mail(struct istream *input,
4ed1b49d815ec41a5e4b6a23d23e94b958da1923Timo Sirainenint mbox_sync_parse_match_mail(struct mbox_mailbox *mbox,
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainenvoid mbox_sync_update_header(struct mbox_sync_mail_context *ctx);
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainenvoid mbox_sync_update_header_from(struct mbox_sync_mail_context *ctx,
8eb94c5190ba09bb6f6f068eec7bf96750f08d1dTimo Sirainenint mbox_sync_try_rewrite(struct mbox_sync_mail_context *ctx, off_t move_diff);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenint mbox_sync_rewrite(struct mbox_sync_context *sync_ctx,
8eb94c5190ba09bb6f6f068eec7bf96750f08d1dTimo Sirainen uoff_t end_offset, off_t move_diff, uoff_t extra_space,
0727e38ac12efb8963a339daf56255e2be1f29fcTimo Sirainenvoid mbox_sync_apply_index_syncs(struct mbox_sync_context *sync_ctx,
8eb94c5190ba09bb6f6f068eec7bf96750f08d1dTimo Sirainenint mbox_sync_seek(struct mbox_sync_context *sync_ctx, uoff_t from_offset);
8eb94c5190ba09bb6f6f068eec7bf96750f08d1dTimo Sirainenint mbox_move(struct mbox_sync_context *sync_ctx,
43a66a0b16299bd4f7615acd85e98bd3832c54d5Timo Sirainenvoid mbox_sync_move_buffer(struct mbox_sync_mail_context *ctx,