enum modify_type modify_type =
!reverse ? MODIFY_ADD : MODIFY_REMOVE;
- if (doveadm_mail_iter_init(ctx, info, search_args, 0, NULL,
+ if (doveadm_mail_iter_init(ctx, info, search_args, 0, NULL, FALSE,
&iter) < 0)
return -1;
struct mail *mail;
int ret = 0;
- if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args, 0,
+ if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args, 0, FALSE,
NULL, &iter) < 0)
return -1;
struct uidlist *value;
int ret = 0;
- if (doveadm_mail_iter_init(_ctx, info, search_args, 0, NULL,
+ if (doveadm_mail_iter_init(_ctx, info, search_args, 0, NULL, FALSE,
&iter) < 0)
return -1;
enum mail_error error;
int ret = 0;
- if (doveadm_mail_iter_init(_ctx, info, search_args, 0, NULL,
+ if (doveadm_mail_iter_init(_ctx, info, search_args, 0, NULL, FALSE,
&iter) < 0)
return -1;
int ret = 0;
if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args,
- ctx->wanted_fields,
+ ctx->wanted_fields, FALSE,
array_idx(&ctx->header_fields, 0),
&iter) < 0)
return -1;
struct mail *mail;
struct mail_keywords *kw = NULL;
- if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args,
+ if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args, FALSE,
0, NULL, &iter) < 0)
return -1;
box = doveadm_mail_iter_get_mailbox(iter);
struct mail *mail;
int ret = 0;
- if (doveadm_mail_iter_init(&ctx->ctx, info, search_args, 0, NULL,
+ if (doveadm_mail_iter_init(&ctx->ctx, info, search_args, 0, NULL, FALSE,
&iter) < 0)
return -1;
struct mail_search_args *search_args,
enum mail_fetch_field wanted_fields,
const char *const *wanted_headers,
+ bool readonly,
struct doveadm_mail_iter **iter_r)
{
struct doveadm_mail_iter *iter;
const char *errstr;
enum mail_error error;
+ enum mailbox_flags readonly_flag =
+ readonly ? MAILBOX_FLAG_READONLY : 0;
+
iter = i_new(struct doveadm_mail_iter, 1);
iter->ctx = ctx;
iter->box = mailbox_alloc(info->ns->list, info->vname,
- MAILBOX_FLAG_IGNORE_ACLS);
+ MAILBOX_FLAG_IGNORE_ACLS | readonly_flag);
iter->search_args = search_args;
if (mailbox_sync(iter->box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) {
struct mail_search_args *search_args,
enum mail_fetch_field wanted_fields,
const char *const *wanted_headers,
- struct doveadm_mail_iter **iter_r) ATTR_NULL(5);
+ bool readonly,
+ struct doveadm_mail_iter **iter_r) ATTR_NULL(6);
int doveadm_mail_iter_deinit(struct doveadm_mail_iter **iter);
int doveadm_mail_iter_deinit_sync(struct doveadm_mail_iter **iter);
int doveadm_mail_iter_deinit_keep_box(struct doveadm_mail_iter **iter,
const char *guid_str;
int ret = 0;
- if (doveadm_mail_iter_init(ctx, info, ctx->search_args, 0, NULL,
+ if (doveadm_mail_iter_init(ctx, info, ctx->search_args, 0, NULL, FALSE,
&iter) < 0)
return -1;
box = doveadm_mail_iter_get_mailbox(iter);