diff --git a/src/doveadm/doveadm-mail-flags.c b/src/doveadm/doveadm-mail-flags.c index 60e631394c..ca109c8a50 100644 --- a/src/doveadm/doveadm-mail-flags.c +++ b/src/doveadm/doveadm-mail-flags.c @@ -147,7 +147,8 @@ struct doveadm_cmd_ver2 doveadm_cmd_flags_add_ver2 = { .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX " ", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0) +DOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE) DOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -158,7 +159,8 @@ struct doveadm_cmd_ver2 doveadm_cmd_flags_remove_ver2 = { .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX " ", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0) +DOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE) DOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -169,7 +171,8 @@ struct doveadm_cmd_ver2 doveadm_cmd_flags_replace_ver2 = { .usage = DOVEADM_CMD_MAIL_USAGE_PREFIX " ", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM('\0', "flags", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "flag", CMD_PARAM_ARRAY, 0) +DOVEADM_CMD_PARAM('\0', "flagstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL|CMD_PARAM_FLAG_DO_NOT_EXPOSE) DOVEADM_CMD_PARAM('\0', "query", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index bfc667f19e..d94bfd0d44 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -908,6 +908,7 @@ doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, struct doveadm_mail_cmd_context *ctx; const char *wildcard_user; const char *fieldstr; + ARRAY_TYPE(const_string) pargv; int i; struct doveadm_mail_cmd mail_cmd = { @@ -946,8 +947,9 @@ doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, } else if (ctx->v.parse_arg != NULL && argv[i].short_opt != '\0') { optarg = (char*)argv[i].value.v_string; ctx->v.parse_arg(ctx, argv[i].short_opt); - } else if (strcmp(argv[i].name, "field") == 0) { - /* mailbox status, fetch: convert an array into a + } else if (strcmp(argv[i].name, "field") == 0 || + strcmp(argv[i].name, "flag") == 0) { + /* mailbox status, fetch, flags: convert an array into a single space-separated parameter (alternative to fieldstr) */ fieldstr = p_array_const_string_join(ctx->pool,