# HG changeset patch # User Timo Sirainen # Date 1190467280 -10800 # Node ID aeee5076f99f6950840b2948d7b093a0efb372df # Parent 60a34f26c35ac90cce557808375388596d8b7012 Use mailbox_sync() instead of our own implementation. diff -r 60a34f26c35a -r aeee5076f99f src/imap/cmd-select.c --- a/src/imap/cmd-select.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/imap/cmd-select.c Sat Sep 22 16:21:20 2007 +0300 @@ -36,15 +36,15 @@ return TRUE; } - if (imap_sync_nonselected(box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) { + if (mailbox_sync(box, MAILBOX_SYNC_FLAG_FULL_READ, + STATUS_MESSAGES | STATUS_RECENT | + STATUS_FIRST_UNSEEN_SEQ | STATUS_UIDVALIDITY | + STATUS_UIDNEXT | STATUS_KEYWORDS, &status) < 0) { client_send_storage_error(cmd, storage); mailbox_close(&box); return TRUE; } - mailbox_get_status(box, STATUS_MESSAGES | STATUS_RECENT | - STATUS_FIRST_UNSEEN_SEQ | STATUS_UIDVALIDITY | - STATUS_UIDNEXT | STATUS_KEYWORDS, &status); client_save_keywords(&client->keywords, status.keywords); client->messages_count = status.messages; client->recent_count = status.recent; diff -r 60a34f26c35a -r aeee5076f99f src/imap/imap-status.c --- a/src/imap/imap-status.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/imap/imap-status.c Sat Sep 22 16:21:20 2007 +0300 @@ -49,31 +49,25 @@ struct mailbox_status *status_r) { struct mailbox *box; - bool failed = FALSE; + int ret; if (client->mailbox != NULL && mailbox_equals(client->mailbox, storage, mailbox)) { /* this mailbox is selected */ box = client->mailbox; - } else { - /* open the mailbox */ - box = mailbox_open(storage, mailbox, NULL, MAILBOX_OPEN_FAST | - MAILBOX_OPEN_READONLY | - MAILBOX_OPEN_KEEP_RECENT); - if (box == NULL) - return FALSE; - - if (imap_sync_nonselected(box, 0) < 0) - failed = TRUE; + mailbox_get_status(box, items, status_r); + return TRUE; } - if (!failed) - mailbox_get_status(box, items, status_r); + /* open the mailbox */ + box = mailbox_open(storage, mailbox, NULL, MAILBOX_OPEN_FAST | + MAILBOX_OPEN_READONLY | MAILBOX_OPEN_KEEP_RECENT); + if (box == NULL) + return FALSE; - if (box != client->mailbox) - mailbox_close(&box); - - return !failed; + ret = mailbox_sync(box, 0, items, status_r); + mailbox_close(&box); + return ret == 0; } void imap_status_send(struct client *client, const char *mailbox, diff -r 60a34f26c35a -r aeee5076f99f src/imap/imap-sync.c --- a/src/imap/imap-sync.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/imap/imap-sync.c Sat Sep 22 16:21:20 2007 +0300 @@ -191,17 +191,6 @@ return ret; } -int imap_sync_nonselected(struct mailbox *box, enum mailbox_sync_flags flags) -{ - struct mailbox_sync_context *ctx; - struct mailbox_sync_rec sync_rec; - - ctx = mailbox_sync_init(box, flags); - while (mailbox_sync_next(ctx, &sync_rec)) - ; - return mailbox_sync_deinit(&ctx, 0, NULL); -} - static bool cmd_sync_continue(struct client_command_context *cmd) { struct cmd_sync_context *ctx = cmd->context; diff -r 60a34f26c35a -r aeee5076f99f src/imap/imap-sync.h --- a/src/imap/imap-sync.h Sat Sep 22 16:21:09 2007 +0300 +++ b/src/imap/imap-sync.h Sat Sep 22 16:21:20 2007 +0300 @@ -14,8 +14,6 @@ int imap_sync_deinit(struct imap_sync_context *ctx); int imap_sync_more(struct imap_sync_context *ctx); -int imap_sync_nonselected(struct mailbox *box, enum mailbox_sync_flags flags); - bool cmd_sync(struct client_command_context *cmd, enum mailbox_sync_flags flags, enum imap_sync_flags imap_flags, const char *tagline); diff -r 60a34f26c35a -r aeee5076f99f src/plugins/convert/convert-storage.c --- a/src/plugins/convert/convert-storage.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/plugins/convert/convert-storage.c Sat Sep 22 16:21:20 2007 +0300 @@ -25,17 +25,6 @@ MEMBER(use_excl_lock) FALSE }; -static int sync_mailbox(struct mailbox *box) -{ - struct mailbox_sync_context *ctx; - struct mailbox_sync_rec sync_rec; - - ctx = mailbox_sync_init(box, MAILBOX_SYNC_FLAG_FULL_READ); - while (mailbox_sync_next(ctx, &sync_rec)) - ; - return mailbox_sync_deinit(&ctx, 0, NULL); -} - static int mailbox_copy_mails(struct mailbox *srcbox, struct mailbox *destbox, struct dotlock *dotlock) { @@ -45,7 +34,7 @@ struct mail_search_arg search_arg; int ret = 0; - if (sync_mailbox(srcbox) < 0) + if (mailbox_sync(srcbox, MAILBOX_SYNC_FLAG_FULL_READ, 0, NULL) < 0) return -1; memset(&search_arg, 0, sizeof(search_arg)); diff -r 60a34f26c35a -r aeee5076f99f src/plugins/mbox-snarf/mbox-snarf-plugin.c --- a/src/plugins/mbox-snarf/mbox-snarf-plugin.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/plugins/mbox-snarf/mbox-snarf-plugin.c Sat Sep 22 16:21:20 2007 +0300 @@ -35,17 +35,6 @@ static MODULE_CONTEXT_DEFINE_INIT(mbox_snarf_storage_module, &mail_storage_module_register); -static int sync_mailbox(struct mailbox *box) -{ - struct mailbox_sync_context *ctx; - struct mailbox_sync_rec sync_rec; - - ctx = mailbox_sync_init(box, MAILBOX_SYNC_FLAG_FULL_READ); - while (mailbox_sync_next(ctx, &sync_rec)) - ; - return mailbox_sync_deinit(&ctx, 0, NULL); -} - static int mbox_snarf(struct mailbox *srcbox, struct mailbox *destbox) { struct mail_search_arg search_arg; @@ -54,7 +43,7 @@ struct mail *mail; int ret; - if (sync_mailbox(srcbox) < 0) + if (mailbox_sync(srcbox, MAILBOX_SYNC_FLAG_FULL_READ, 0, NULL) < 0) return -1; memset(&search_arg, 0, sizeof(search_arg)); diff -r 60a34f26c35a -r aeee5076f99f src/plugins/trash/trash-plugin.c --- a/src/plugins/trash/trash-plugin.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/plugins/trash/trash-plugin.c Sat Sep 22 16:21:20 2007 +0300 @@ -42,17 +42,6 @@ /* trash_boxes ordered by priority, highest first */ static ARRAY_DEFINE(trash_boxes, struct trash_mailbox); -static int sync_mailbox(struct mailbox *box) -{ - struct mailbox_sync_context *ctx; - struct mailbox_sync_rec sync_rec; - - ctx = mailbox_sync_init(box, MAILBOX_SYNC_FLAG_FULL_READ); - while (mailbox_sync_next(ctx, &sync_rec)) - ; - return mailbox_sync_deinit(&ctx, 0, NULL); -} - static int trash_clean_mailbox_open(struct trash_mailbox *trash) { trash->box = mailbox_open(trash->storage, trash->name, NULL, @@ -60,7 +49,7 @@ if (trash->box == NULL) return 0; - if (sync_mailbox(trash->box) < 0) + if (mailbox_sync(trash->box, MAILBOX_SYNC_FLAG_FULL_READ, 0, NULL) < 0) return -1; trash->trans = mailbox_transaction_begin(trash->box, 0); diff -r 60a34f26c35a -r aeee5076f99f src/pop3/client.c --- a/src/pop3/client.c Sat Sep 22 16:21:09 2007 +0300 +++ b/src/pop3/client.c Sat Sep 22 16:21:20 2007 +0300 @@ -38,17 +38,6 @@ static void client_input(struct client *client); static int client_output(struct client *client); -static int sync_mailbox(struct mailbox *box, struct mailbox_status *status) -{ - struct mailbox_sync_context *ctx; - struct mailbox_sync_rec sync_rec; - - ctx = mailbox_sync_init(box, MAILBOX_SYNC_FLAG_FULL_READ); - while (mailbox_sync_next(ctx, &sync_rec)) - ; - return mailbox_sync_deinit(&ctx, STATUS_UIDVALIDITY, status); -} - static bool init_mailbox(struct client *client, const char **error_r) { struct mail_search_arg search_arg; @@ -68,7 +57,8 @@ search_arg.type = SEARCH_ALL; for (i = 0; i < 2; i++) { - if (sync_mailbox(client->mailbox, &status) < 0) { + if (mailbox_sync(client->mailbox, MAILBOX_SYNC_FLAG_FULL_READ, + STATUS_UIDVALIDITY, &status) < 0) { client_send_storage_error(client); break; }