doveadm-mail-mailbox.c revision 5f7f5baf6ce0b9428793b590ca286cdb24f67a11
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen/* Copyright (c) 2010-2016 Dovecot authors, see the included COPYING file */
7be8ba0c0462887826e5ee6da6a27964d30383b5Timo Sirainenvoid doveadm_mailbox_args_check(const char *const args[])
7be8ba0c0462887826e5ee6da6a27964d30383b5Timo Sirainen unsigned int i;
a10ed8c47534b4c6b6bf2711ccfe577e720a47b4Timo Sirainenstatic bool cmd_mailbox_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch (type *)doveadm_mailbox_cmd_alloc_size(sizeof(type))
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschcmd_mailbox_list_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct list_cmd_context *ctx = (struct list_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschcmd_mailbox_list_run(struct doveadm_mail_cmd_context *_ctx,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct list_cmd_context *ctx = (struct list_cmd_context *)_ctx;
5afe997e79978b7e989aa3b0bfdf4a813ecdc6f6Timo Sirainen iter_flags |= MAILBOX_LIST_ITER_SELECT_SUBSCRIBED;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch iter = doveadm_mailbox_list_iter_full_init(_ctx, user, ctx->search_args,
76f0cc074ea79151e968078906224d8b6a5806fdTimo Sirainen while ((info = doveadm_mailbox_list_iter_next(iter)) != NULL) {
76f0cc074ea79151e968078906224d8b6a5806fdTimo Sirainen if (doveadm_mailbox_list_iter_deinit(&iter) < 0)
04f9886078d53b136f747484b3ad9e1f7fad5994Timo Sirainendoveadm_mail_mailbox_search_args_build(const char *const args[])
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch unsigned int i;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch arg = mail_search_build_add(search_args, type);
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch arg->value.str = p_strdup(search_args->pool, args[i]);
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct mail_search_arg *subargs = search_args->args;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch arg = mail_search_build_add(search_args, SEARCH_OR);
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic void cmd_mailbox_list_init(struct doveadm_mail_cmd_context *_ctx,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch const char *const args[])
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainen struct list_cmd_context *ctx = (struct list_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch ctx->search_args = doveadm_mail_mailbox_search_args_build(args);
3ab672903a7ed98263b89180261079870c964831Timo Sirainenstatic void cmd_mailbox_list_deinit(struct doveadm_mail_cmd_context *_ctx)
3ab672903a7ed98263b89180261079870c964831Timo Sirainen struct list_cmd_context *ctx = (struct list_cmd_context *)_ctx;
3ab672903a7ed98263b89180261079870c964831Timo Sirainenstatic struct doveadm_mail_cmd_context *cmd_mailbox_list_alloc(void)
3ab672903a7ed98263b89180261079870c964831Timo Sirainen ctx = doveadm_mailbox_cmd_alloc(struct list_cmd_context);
3ab672903a7ed98263b89180261079870c964831Timo Sirainen ctx->ctx.ctx.v.deinit = cmd_mailbox_list_deinit;
3ab672903a7ed98263b89180261079870c964831Timo Sirainen ctx->ctx.ctx.v.parse_arg = cmd_mailbox_list_parse_arg;
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainencmd_mailbox_create_run(struct doveadm_mail_cmd_context *_ctx,
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch struct create_cmd_context *ctx = (struct create_cmd_context *)_ctx;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch const char *const *namep;
5afe997e79978b7e989aa3b0bfdf4a813ecdc6f6Timo Sirainen unsigned int len;
2c42748505ef4aed83ff59b34e50ed5606900c86Timo Sirainen ns = mail_namespace_find(user->namespaces, name);
5afe997e79978b7e989aa3b0bfdf4a813ecdc6f6Timo Sirainen if (len > 0 && name[len-1] == mail_namespace_get_sep(ns)) {
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch if (mailbox_create(box, &ctx->update, directory) < 0) {
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainen i_error("Can't subscribe to mailbox %s: %s", name,
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainenstatic void cmd_mailbox_create_init(struct doveadm_mail_cmd_context *_ctx,
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainen const char *const args[])
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainen struct mailbox_cmd_context *ctx = (struct mailbox_cmd_context *)_ctx;
4afd5082f38342fd688acb5796912329f57dd02cTimo Sirainen unsigned int i;
3ab672903a7ed98263b89180261079870c964831Timo Sirainencmd_mailbox_create_parse_arg(struct doveadm_mail_cmd_context *_ctx, int c)
3ab672903a7ed98263b89180261079870c964831Timo Sirainen struct create_cmd_context *ctx = (struct create_cmd_context *)_ctx;
3ab672903a7ed98263b89180261079870c964831Timo Sirainen if (guid_128_from_string(optarg, ctx->update.mailbox_guid) < 0)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic struct doveadm_mail_cmd_context *cmd_mailbox_create_alloc(void)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch ctx = doveadm_mailbox_cmd_alloc(struct create_cmd_context);
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch ctx->ctx.ctx.v.init = cmd_mailbox_create_init;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch ctx->ctx.ctx.v.parse_arg = cmd_mailbox_create_parse_arg;
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Bosch p_array_init(&ctx->mailboxes, ctx->ctx.ctx.pool, 16);
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschstatic int i_strcmp_reverse_p(const char *const *s1, const char *const *s2)
0fe2992e4d09f3ae4cceea88c9871c832d67b461Stephan Boschget_child_mailboxes(struct mail_user *user, ARRAY_TYPE(const_string) *mailboxes,
const char *name)
const char *const *namep;
int ret = 0;
*namep) < 0) {
return ret;
const char *const args[])
const char *name;
return FALSE;
return TRUE;
int ret = 0;
return ret;
const char *const args[])
const char *const *namep;
int ret = 0;
return ret;
const char *const args[])
const char *name;
static struct doveadm_mail_cmd_context *
const char *const args[])
return FALSE;
return TRUE;
int ret = 0;
return ret;
.usage = DOVEADM_CMD_MAIL_USAGE_PREFIX"[--mailbox-guid guid] [--uid-validity uid] [--min-next-uid uid] [--min-first-recent-uid uid] [--min-highest-modseq seq] [--min-highest-pvt-modseq seq] <mailbox>",