Lines Matching refs:iter

8 #include "doveadm-mail-iter.h"
28 struct doveadm_mail_iter *iter;
36 iter = i_new(struct doveadm_mail_iter, 1);
37 iter->ctx = ctx;
38 iter->box = mailbox_alloc(info->ns->list, info->vname,
40 mailbox_set_reason(iter->box, ctx->cmd->name);
41 iter->search_args = search_args;
43 if (mailbox_sync(iter->box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) {
44 errstr = mailbox_get_last_internal_error(iter->box, &error);
47 *iter_r = iter;
51 doveadm_mail_failed_mailbox(ctx, iter->box);
52 mailbox_free(&iter->box);
53 i_free(iter);
58 NULL : mailbox_header_lookup_init(iter->box, wanted_headers);
60 mail_search_args_init(search_args, iter->box, FALSE, NULL);
61 iter->t = mailbox_transaction_begin(iter->box, 0, ctx->cmd->name);
62 iter->search_ctx = mailbox_search_init(iter->t, search_args, NULL,
65 *iter_r = iter;
70 doveadm_mail_iter_deinit_transaction(struct doveadm_mail_iter *iter,
75 if (iter->search_ctx != NULL) {
76 if (mailbox_search_deinit(&iter->search_ctx) < 0) {
78 mailbox_get_vname(iter->box),
79 mailbox_get_last_internal_error(iter->box, NULL));
83 if (iter->t == NULL)
86 if (mailbox_transaction_commit(&iter->t) < 0) {
88 mailbox_get_vname(iter->box),
89 mailbox_get_last_internal_error(iter->box, NULL));
93 mailbox_transaction_rollback(&iter->t);
95 mail_search_args_deinit(iter->search_args);
103 struct doveadm_mail_iter *iter = *_iter;
108 ret = doveadm_mail_iter_deinit_transaction(iter, commit);
110 ret = mailbox_sync(iter->box, 0);
113 mailbox_get_vname(iter->box),
114 mailbox_get_last_internal_error(iter->box, NULL));
118 doveadm_mail_failed_mailbox(iter->ctx, iter->box);
119 else if (iter->killed) {
120 iter->ctx->exit_code = EX_TEMPFAIL;
124 mailbox_free(&iter->box);
125 i_free(iter);
139 int doveadm_mail_iter_deinit_keep_box(struct doveadm_mail_iter **iter,
142 *box_r = (*iter)->box;
143 return doveadm_mail_iter_deinit_full(iter, FALSE, TRUE, TRUE);
151 bool doveadm_mail_iter_next(struct doveadm_mail_iter *iter,
154 if (iter->search_ctx == NULL)
157 iter->killed = TRUE;
160 return mailbox_search_next(iter->search_ctx, mail_r);
163 struct mailbox *doveadm_mail_iter_get_mailbox(struct doveadm_mail_iter *iter)
165 return iter->box;