imap-sync.c revision e60a349c641bb2f4723e4a395a25f55531682d2b
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen/* Copyright (C) 2002-2004 Timo Sirainen */
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainenimap_sync_init(struct client *client, struct mailbox *box,
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen ctx->sync_ctx = mailbox_sync_init(box, flags);
1b3bb8d39686ed24730cbc31cc9a33dc62c8c6c3Timo Sirainen ctx->t = mailbox_transaction_begin(box, FALSE);
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainenint imap_sync_deinit(struct imap_sync_context *ctx)
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen if (mailbox_sync_deinit(ctx->sync_ctx, &status) < 0 || ctx->failed) {
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen ctx->client->messages_count = status.messages;
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen t_strdup_printf("* %u EXISTS", status.messages));
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen if (status.recent != ctx->client->recent_count) {
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen t_strdup_printf("* %u RECENT", status.recent));
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen /*FIXME:client_save_keywords(&client->keywords, keywords, keywords_count);
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen client_send_mailbox_flags(client, mailbox, keywords, keywords_count);*/
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainenint imap_sync_more(struct imap_sync_context *ctx)
16c89b1260c9d07c01c83a9219424d3727069b2eTimo Sirainen const char *const *keywords;
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen /* get next one */
68efcccb384f2d6871164b072457e87473502c51Timo Sirainen /* all finished ok */
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen for (; ctx->seq <= ctx->sync_rec.seq2; ctx->seq++) {
68efcccb384f2d6871164b072457e87473502c51Timo Sirainen ret = client_send_line(ctx->client, str_c(str));
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainen for (; ctx->seq >= ctx->sync_rec.seq1; ctx->seq--) {
68efcccb384f2d6871164b072457e87473502c51Timo Sirainen ret = client_send_line(ctx->client, str_c(str));
c4267cf4c40fb1f866b5958ff122ef836b8c5dfbTimo Sirainenint imap_sync_nonselected(struct mailbox *box, enum mailbox_sync_flags flags)
e60a349c641bb2f4723e4a395a25f55531682d2bTimo Sirainenstatic int cmd_sync_continue(struct client_command_context *cmd)
e60a349c641bb2f4723e4a395a25f55531682d2bTimo Sirainen client_send_untagged_storage_error(cmd->client,
e60a349c641bb2f4723e4a395a25f55531682d2bTimo Sirainenint cmd_sync(struct client_command_context *cmd, enum mailbox_sync_flags flags,
e60a349c641bb2f4723e4a395a25f55531682d2bTimo Sirainen ctx = p_new(cmd->pool, struct cmd_sync_context, 1);