struct client *client = cmd->client;
const struct imap_arg *args, *list_args;
unsigned int arg_count;
- struct cmd_list_context *ctx;
+ struct cmd_list_context *ctx;
ARRAY_DEFINE(patterns, const char *) = ARRAY_INIT;
const char *pattern, *const *patterns_strarr;
+ string_t *str;
/* [(<selection options>)] <reference> <pattern>|(<pattern list>)
[RETURN (<return options>)] */
client_send_command_error(cmd, "Invalid reference.");
return TRUE;
}
+ str = t_str_new(64);
if (imap_arg_get_list_full(&args[1], &list_args, &arg_count)) {
ctx->used_listext = TRUE;
/* convert pattern list to string array */
"Invalid pattern list.");
return TRUE;
}
+ if (imap_utf7_to_utf8(pattern, str) == 0)
+ pattern = t_strdup(str_c(str));
array_append(&patterns, &pattern, 1);
+ str_truncate(str, 0);
}
args += 2;
} else {
client_send_command_error(cmd, "Invalid pattern.");
return TRUE;
}
+ if (imap_utf7_to_utf8(pattern, str) == 0)
+ pattern = str_c(str);
p_array_init(&patterns, cmd->pool, 1);
array_append(&patterns, &pattern, 1);