struct mailbox_sync_context * mdbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { struct mdbox_mailbox *mbox = (struct mdbox_mailbox *)box; enum mdbox_sync_flags mdbox_sync_flags = 0; int ret = 0; if (!box->opened) { if (mailbox_open(box) < 0) ret = -1; } if (box->opened) { if (mail_index_reset_fscked(box->index)) mdbox_storage_set_corrupted(mbox->storage); } if (ret == 0 && (index_mailbox_want_full_sync(&mbox->box, flags) || mbox->storage->corrupted)) { if ((flags & MAILBOX_SYNC_FLAG_FORCE_RESYNC) != 0) mdbox_sync_flags |= MDBOX_SYNC_FLAG_FORCE_REBUILD; ret = mdbox_sync(mbox, mdbox_sync_flags); } return index_mailbox_sync_init(box, flags, ret < 0); }
struct mailbox_sync_context * raw_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { struct raw_mailbox *mbox = (struct raw_mailbox *)box; int ret = 0; if (!box->opened) { if (mailbox_open(box) < 0) ret = -1; } if (!mbox->synced && ret == 0) ret = raw_sync(mbox); return index_mailbox_sync_init(box, flags, ret < 0); }
struct mailbox_sync_context * cydir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { struct cydir_mailbox *mbox = (struct cydir_mailbox *)box; int ret = 0; if (!box->opened) { if (mailbox_open(box) < 0) ret = -1; } if (index_mailbox_want_full_sync(&mbox->box, flags) && ret == 0) ret = cydir_sync(mbox); return index_mailbox_sync_init(box, flags, ret < 0); }