doveadm-mail-flags.c revision 00b10a9ca50bca190e72a19aa6571ea612701d82
08b30498acefc69e223baf7eda6429be98cc3a10Timo Sirainen/* Copyright (c) 2013-2016 Dovecot authors, see the included COPYING file */
5363a534097c170ef9cccbdde5ca802f581f5eb7Timo Sirainen const char *const *keywords;
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainencmd_flags_run_box(struct flags_cmd_context *ctx,
d371507847d62ba311b4bcc23d18f45c3d0f1a38Timo Sirainen if (doveadm_mail_iter_init(&ctx->ctx, info, ctx->ctx.search_args, FALSE,
2d3aac5be07b96f72cf0551fac35ac74a4f07770Timo Sirainen if (mailbox_keywords_create(box, ctx->keywords, &kw) < 0) {
a205d315b0978985ba77d871f44e4a98273612e6Timo Sirainen mail_update_flags(mail, ctx->modify_type, ctx->flags);
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen mail_update_keywords(mail, ctx->modify_type, kw);
a6a2b38d806f3ab3198160e39240a8200775e525Timo Sirainencmd_flags_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user *user)
fb2e0bbb7737f3223b16aa41e4b40fb0cd5f288fTimo Sirainen struct flags_cmd_context *ctx = (struct flags_cmd_context *)_ctx;
12d34ab79772e0748a1daef30fa749dfe3036608Timo Sirainen const enum mailbox_list_iter_flags iter_flags =
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen iter = doveadm_mailbox_list_iter_init(_ctx, user, _ctx->search_args,
f0569d9fbb25c8437760be69f194595a841ad711Timo Sirainen while ((info = doveadm_mailbox_list_iter_next(iter)) != NULL) T_BEGIN {
abe8230dd1dd37d7ccf0163100e934bb5e658c20Timo Sirainen if (doveadm_mailbox_list_iter_deinit(&iter) < 0)
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainenstatic void cmd_flags_init(struct doveadm_mail_cmd_context *_ctx,
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen const char *const args[])
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen struct flags_cmd_context *ctx = (struct flags_cmd_context *)_ctx;
821984ecb6c90696f35c32a8dc4c8a60f9e98f99Timo Sirainen const char *const *tmp;
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen for (tmp = t_strsplit(args[0], " "); *tmp != NULL; tmp++) {
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen if (array_count(&keywords) > 0 || ctx->modify_type == MODIFY_REPLACE) {
313fe89df4d91cd0cd7f3558dc6d7fd21ad39eeeTimo Sirainen _ctx->search_args = doveadm_mail_build_search_args(args+1);
8d80659e504ffb34bb0c6a633184fece35751b18Timo Sirainen ctx = doveadm_mail_cmd_alloc(struct flags_cmd_context);
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_add_alloc(void)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_remove_alloc(void)
5363a534097c170ef9cccbdde5ca802f581f5eb7Timo Sirainenstatic struct doveadm_mail_cmd_context *cmd_flags_replace_alloc(void)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_add_ver2 = {
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0)
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE)
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_remove_ver2 = {
5363a534097c170ef9cccbdde5ca802f581f5eb7Timo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0)
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE)
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL)
bb10ebcf076c959c752f583746d83805d7686df8Timo Sirainenstruct doveadm_cmd_ver2 doveadm_cmd_flags_replace_ver2 = {
5363a534097c170ef9cccbdde5ca802f581f5eb7Timo Sirainen .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX "<flags> <search query>",
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0)
bb10ebcf076c959c752f583746d83805d7686df8Timo SirainenDOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE)