Lines Matching refs:ctx
26 struct doveadm_mail_cmd_context ctx;
37 static void status_parse_fields(struct status_cmd_context *ctx,
47 if (ctx->total_sum) {
48 ctx->status_items |= TOTAL_STATUS_ITEMS;
49 ctx->metadata_items |= TOTAL_METADATA_ITEMS;
51 ctx->status_items |= ALL_STATUS_ITEMS;
52 ctx->metadata_items |= ALL_METADATA_ITEMS;
55 ctx->status_items |= STATUS_MESSAGES;
57 ctx->status_items |= STATUS_RECENT;
59 ctx->status_items |= STATUS_UIDNEXT;
61 ctx->status_items |= STATUS_UIDVALIDITY;
63 ctx->status_items |= STATUS_UNSEEN;
65 ctx->status_items |= STATUS_HIGHESTMODSEQ;
67 ctx->metadata_items |= MAILBOX_METADATA_VIRTUAL_SIZE;
69 ctx->metadata_items |= MAILBOX_METADATA_GUID;
71 ctx->metadata_items |= MAILBOX_METADATA_FIRST_SAVE_DATE;
77 if (ctx->total_sum &&
78 ((ctx->status_items & ~TOTAL_STATUS_ITEMS) != 0 ||
79 (ctx->metadata_items & ~TOTAL_METADATA_ITEMS) != 0)) {
87 status_output(struct status_cmd_context *ctx, struct mailbox *box,
94 if ((ctx->status_items & STATUS_MESSAGES) != 0)
96 if ((ctx->status_items & STATUS_RECENT) != 0)
98 if ((ctx->status_items & STATUS_UIDNEXT) != 0)
100 if ((ctx->status_items & STATUS_UIDVALIDITY) != 0)
102 if ((ctx->status_items & STATUS_UNSEEN) != 0)
104 if ((ctx->status_items & STATUS_HIGHESTMODSEQ) != 0)
106 if ((ctx->metadata_items & MAILBOX_METADATA_VIRTUAL_SIZE) != 0)
108 if ((ctx->metadata_items & MAILBOX_METADATA_GUID) != 0)
110 if ((ctx->metadata_items & MAILBOX_METADATA_FIRST_SAVE_DATE) != 0)
115 status_sum(struct status_cmd_context *ctx,
119 struct mailbox_status *dest = &ctx->total_status;
124 ctx->total_metadata.virtual_size += metadata->virtual_size;
128 status_mailbox(struct status_cmd_context *ctx, const struct mailbox_info *info)
134 box = doveadm_mailbox_find(ctx->ctx.cur_mail_user, info->vname);
135 mailbox_set_reason(box, ctx->ctx.cmd->name);
136 if (mailbox_get_status(box, ctx->status_items, &status) < 0 ||
137 mailbox_get_metadata(box, ctx->metadata_items, &metadata) < 0) {
141 doveadm_mail_failed_mailbox(&ctx->ctx, box);
145 if (!ctx->total_sum)
146 status_output(ctx, box, &status, &metadata);
148 status_sum(ctx, &status, &metadata);
157 struct status_cmd_context *ctx = (struct status_cmd_context *)_ctx;
165 i_zero(&ctx->total_status);
166 i_zero(&ctx->total_metadata);
168 iter = doveadm_mailbox_list_iter_init(_ctx, user, ctx->search_args,
172 if (status_mailbox(ctx, info) < 0)
179 if (ctx->total_sum) {
180 status_output(ctx, NULL, &ctx->total_status,
181 &ctx->total_metadata);
189 struct status_cmd_context *ctx = (struct status_cmd_context *)_ctx;
195 status_parse_fields(ctx, t_strsplit_spaces(fields, " "));
196 ctx->search_args = doveadm_mail_mailbox_search_args_build(args+1);
198 if (!ctx->total_sum) {
202 if ((ctx->status_items & STATUS_MESSAGES) != 0)
204 if ((ctx->status_items & STATUS_RECENT) != 0)
206 if ((ctx->status_items & STATUS_UIDNEXT) != 0)
208 if ((ctx->status_items & STATUS_UIDVALIDITY) != 0)
210 if ((ctx->status_items & STATUS_UNSEEN) != 0)
212 if ((ctx->status_items & STATUS_HIGHESTMODSEQ) != 0)
214 if ((ctx->metadata_items & MAILBOX_METADATA_VIRTUAL_SIZE) != 0)
216 if ((ctx->metadata_items & MAILBOX_METADATA_GUID) != 0)
218 if ((ctx->metadata_items & MAILBOX_METADATA_FIRST_SAVE_DATE) != 0)
224 struct status_cmd_context *ctx = (struct status_cmd_context *)_ctx;
226 if (ctx->search_args != NULL)
227 mail_search_args_unref(&ctx->search_args);
233 struct status_cmd_context *ctx = (struct status_cmd_context *)_ctx;
237 ctx->total_sum = TRUE;
249 struct status_cmd_context *ctx;
251 ctx = doveadm_mail_cmd_alloc(struct status_cmd_context);
252 ctx->ctx.getopt_args = "t";
253 ctx->ctx.v.parse_arg = cmd_mailbox_status_parse_arg;
254 ctx->ctx.v.init = cmd_mailbox_status_init;
255 ctx->ctx.v.deinit = cmd_mailbox_status_deinit;
256 ctx->ctx.v.run = cmd_mailbox_status_run;
258 return &ctx->ctx;