const char *value)
{
const char *const *tmp;
- unsigned int i;
e_debug(conn->event, "Server capabilities: %s", value);
p_strsplit_free(default_pool, conn->capabilities_list);
conn->capabilities_list = p_strsplit(default_pool, value, " ");
- for (tmp = t_strsplit(value, " "); *tmp != NULL; tmp++) {
- for (i = 0; imapc_capability_names[i].name != NULL; i++) {
- const struct imapc_capability_name *cap =
- &imapc_capability_names[i];
-
- if (strcasecmp(*tmp, cap->name) == 0) {
- conn->capabilities |= cap->capability;
- break;
- }
- }
- }
+ for (tmp = t_strsplit(value, " "); *tmp != NULL; tmp++)
+ conn->capabilities |= imapc_capability_lookup(*tmp);
if ((conn->capabilities & IMAPC_CAPABILITY_IMAP4REV1) == 0) {
imapc_connection_input_error(conn,
{ NULL, 0 }
};
+enum imapc_capability imapc_capability_lookup(const char *str)
+{
+ for (unsigned int i = 0; imapc_capability_names[i].name != NULL; i++) {
+ if (strcasecmp(imapc_capability_names[i].name, str) == 0)
+ return imapc_capability_names[i].capability;
+ }
+ return 0;
+}
+
struct imapc_feature_list {
const char *name;
enum imapc_features num;