static int cmd_import_box(struct import_cmd_context *ctx, struct mail_user *dest_user, const struct mailbox_info *info, struct mail_search_args *search_args) { struct doveadm_mail_iter *iter; struct mailbox *box; struct mail *mail; int ret = 0; if (doveadm_mail_iter_init(&ctx->ctx, info, search_args, 0, NULL, &iter) < 0) return -1; if (doveadm_mail_iter_next(iter, &mail)) { /* at least one mail matches in this mailbox */ if (dest_mailbox_open_or_create(ctx, dest_user, info->vname, &box) < 0) ret = -1; else { if (cmd_import_box_contents(iter, mail, box) < 0) { doveadm_mail_failed_mailbox(&ctx->ctx, mail->box); ret = -1; } mailbox_free(&box); } } if (doveadm_mail_iter_deinit_sync(&iter) < 0) ret = -1; return ret; }
static int cmd_import_box(struct import_cmd_context *ctx, struct mail_user *dest_user, const struct mailbox_info *info, struct mail_search_args *search_args) { struct doveadm_mail_iter *iter; struct mailbox_transaction_context *trans; struct mailbox *box; struct mail *mail; int ret = 0; if (doveadm_mail_iter_init(info, search_args, &trans, &iter) < 0) return -1; mail = mail_alloc(trans, 0, NULL); if (doveadm_mail_iter_next(iter, mail)) { /* at least one mail matches in this mailbox */ if (dest_mailbox_open_or_create(ctx, dest_user, info->name, &box) == 0) { if (cmd_import_box_contents(iter, mail, box) < 0) ret = -1; mailbox_free(&box); } } mail_free(&mail); if (doveadm_mail_iter_deinit_sync(&iter) < 0) ret = -1; return ret; }