mbox-sync-private.h revision 319944c0f35b311c998854e96d6463a084fd90ae
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define MBOX_NONRECENT MAIL_RECENT /* kludgy */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define STATUS_FLAGS_MASK (MAIL_SEEN|MBOX_NONRECENT)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define XSTATUS_FLAGS_MASK (MAIL_ANSWERED|MAIL_FLAGGED|MAIL_DRAFT|MAIL_DELETED)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern struct mbox_flag_type mbox_status_flags[];
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern struct mbox_flag_type mbox_xstatus_flags[];
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* following variables have a bit overloaded functionality:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis a) space <= 0 : offset points to beginning of headers. space is the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis amount of space missing that is required to be able to rewrite
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis b) space > 0 : offset points to beginning of whitespace that can
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis be removed. space is the amount of data that can be removed from
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis there. note that the message may contain more whitespace
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis size_t header_first_change, header_last_change;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis struct mail_index_sync_ctx *index_sync_ctx;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* header state: */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis uint32_t base_uid_validity, base_uid_last;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis /* mail state: */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis uint32_t seq, idx_seq, need_space_seq, need_space_idx_seq;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync(struct index_mailbox *ibox, enum mbox_sync_flags flags);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync_has_changed(struct index_mailbox *ibox, int leave_dirty);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid mbox_sync_parse_next_mail(struct istream *input,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync_parse_match_mail(struct index_mailbox *ibox,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis struct mail_index_view *view, uint32_t seq);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid mbox_sync_update_header(struct mbox_sync_mail_context *ctx,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid mbox_sync_update_header_from(struct mbox_sync_mail_context *ctx,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync_try_rewrite(struct mbox_sync_mail_context *ctx, off_t move_diff,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync_rewrite(struct mbox_sync_context *sync_ctx, uoff_t extra_space,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_sync_seek(struct mbox_sync_context *sync_ctx, uoff_t from_offset);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisint mbox_move(struct mbox_sync_context *sync_ctx,