doveadm-mail-flags.c revision a893aaa999856b1ba6e4541890016767aaa283c7
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainen/* Copyright (c) 2013-2016 Dovecot authors, see the included COPYING file */
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen const char *const *keywords;
503a863a317acba125a4e46435694e35fad769e4Timo Sirainencmd_flags_run_box(struct flags_cmd_context *ctx,
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args,
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen if (mailbox_keywords_create(box, ctx->keywords, &kw) < 0) {
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen mail_update_flags(mail, ctx->modify_type, ctx->flags);
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen mail_update_keywords(mail, ctx->modify_type, kw);
4082d5b171d1c3a00ba705093d62b8afc9cf17aeTimo Sirainencmd_flags_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user *user)
4082d5b171d1c3a00ba705093d62b8afc9cf17aeTimo Sirainen struct flags_cmd_context *ctx = (struct flags_cmd_context *)_ctx;
4082d5b171d1c3a00ba705093d62b8afc9cf17aeTimo Sirainen const enum mailbox_list_iter_flags iter_flags =
4082d5b171d1c3a00ba705093d62b8afc9cf17aeTimo Sirainen iter = doveadm_mailbox_list_iter_init(_ctx, user, _ctx->search_args,
4082d5b171d1c3a00ba705093d62b8afc9cf17aeTimo Sirainen while ((info = doveadm_mailbox_list_iter_next(iter)) != NULL) T_BEGIN {
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen if (doveadm_mailbox_list_iter_deinit(&iter) < 0)
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainenstatic void cmd_flags_init(struct doveadm_mail_cmd_context *_ctx,
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen const char *const args[])
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen struct flags_cmd_context *ctx = (struct flags_cmd_context *)_ctx;
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen const char *const *tmp;
d06d6667bac64aabe1efb216af56ca45108d63b0Timo Sirainen for (tmp = t_strsplit(args[0], " "); *tmp != NULL; tmp++) {
461ffead9720d1e516b959d5e41f049c73d38c7cTimo Sirainen if (array_count(&keywords) > 0 || ctx->modify_type == MODIFY_REPLACE) {
605eca549c08af753e05c25937bcccd66079c321Timo Sirainen _ctx->search_args = doveadm_mail_build_search_args(args+1);
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainen ctx = doveadm_mail_cmd_alloc(struct flags_cmd_context);
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_add_alloc(void)
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_remove_alloc(void)
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_replace_alloc(void)
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_add_ver2 = {
355fe8b5d02904df39e793f66da5432d86649d4aTimo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
605eca549c08af753e05c25937bcccd66079c321Timo SirainenDOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
6646bd844c85d5b27451199d8868b6d2357cd293Timo SirainenDOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
6646bd844c85d5b27451199d8868b6d2357cd293Timo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_remove_ver2 = {
6646bd844c85d5b27451199d8868b6d2357cd293Timo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
e20e638805c4bd54e039891a3e92760b1dfa189aTimo SirainenDOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
e20e638805c4bd54e039891a3e92760b1dfa189aTimo SirainenDOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
503a863a317acba125a4e46435694e35fad769e4Timo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_replace_ver2 = {
503a863a317acba125a4e46435694e35fad769e4Timo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
503a863a317acba125a4e46435694e35fad769e4Timo SirainenDOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)