imap-sync.c revision 68efcccb384f2d6871164b072457e87473502c51
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher/* Copyright (C) 2002-2004 Timo Sirainen */
d3da1c165cdb4c1ec126a8f4b6b544ca415b9d20Pavel Březinaimap_sync_init(struct client *client, struct mailbox *box,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ctx->sync_ctx = mailbox_sync_init(box, flags);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ctx->t = mailbox_transaction_begin(box, FALSE);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ctx->messages_count = client->messages_count;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherint imap_sync_deinit(struct imap_sync_context *ctx)
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek if (mailbox_sync_deinit(ctx->sync_ctx, &status) < 0 || ctx->failed) {
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek t_strdup_printf("* %u EXISTS", status.messages));
86b61156743b7ebdc049450a6f88452890fd9a61Jakub Hrozek if (status.recent != ctx->client->recent_count) {
48130eef6c5c64a07094b9e8582ba358b2048f24Jakub Hrozek t_strdup_printf("* %u RECENT", status.recent));
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /*FIXME:client_save_keywords(&client->keywords, keywords, keywords_count);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client_send_mailbox_flags(client, mailbox, keywords, keywords_count);*/
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherint imap_sync_more(struct imap_sync_context *ctx)
d921c1eba437662437847279f251a0a5d8f70127Maxim const char *const *keywords;
327127bb7fcc07f882209f029e14026de1b23c94Maxim /* get next one */
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher /* all finished ok */
90fd1bbd6035cdab46faa3a695a2fb2be6508b17Sumit Bose for (; ctx->seq <= ctx->sync_rec.seq2; ctx->seq++) {
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ret = client_send_line(ctx->client, str_c(str));
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher for (; ctx->seq >= ctx->sync_rec.seq1; ctx->seq--) {
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher str_printfa(str, "* %u EXPUNGE", ctx->seq);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ret = client_send_line(ctx->client, str_c(str));
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagherint imap_sync_nonselected(struct mailbox *box, enum mailbox_sync_flags flags)
b32159300fea63222d8dd9200ed634087704ea74Stephen Gallagher while (mailbox_sync_next(ctx, &sync_rec) > 0)
539b1be3507abdf8ac235b06eeed5011b0b5cde2Ondrej Kosstatic int cmd_sync_continue(struct client *client)
2a5790216f57e9bdfb2930d52860bb5300366536Jakub Hrozek struct cmd_sync_context *ctx = client->cmd_context;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if (imap_sync_deinit(ctx->sync_ctx) < 0) {
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client_send_untagged_storage_error(client,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client_send_tagline(client, ctx->tagline);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagherint cmd_sync(struct client *client, enum mailbox_sync_flags flags,
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ctx = p_new(client->cmd_pool, struct cmd_sync_context, 1);
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher ctx->tagline = p_strdup(client->cmd_pool, tagline);