From: Timo Sirainen Date: Wed, 3 Dec 2025 21:04:26 +0000 (+0200) Subject: lib-imap-client: Add and use imapc_capability_lookup() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49ca31cdb26bfba651f098740de9297c411410ef;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Add and use imapc_capability_lookup() --- diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index f6517a427e..50a42c2265 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -784,7 +784,6 @@ imapc_connection_parse_capability(struct imapc_connection *conn, const char *value) { const char *const *tmp; - unsigned int i; e_debug(conn->event, "Server capabilities: %s", value); @@ -793,17 +792,8 @@ imapc_connection_parse_capability(struct imapc_connection *conn, 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, diff --git a/src/lib-imap-client/imapc-settings.c b/src/lib-imap-client/imapc-settings.c index 40e1c385fb..acdc31f874 100644 --- a/src/lib-imap-client/imapc-settings.c +++ b/src/lib-imap-client/imapc-settings.c @@ -117,6 +117,15 @@ const struct imapc_capability_name imapc_capability_names[] = { { 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; diff --git a/src/lib-imap-client/imapc-settings.h b/src/lib-imap-client/imapc-settings.h index 0ace81bb1e..468bdf0280 100644 --- a/src/lib-imap-client/imapc-settings.h +++ b/src/lib-imap-client/imapc-settings.h @@ -96,4 +96,6 @@ struct imapc_settings { extern const struct setting_parser_info imapc_setting_parser_info; +enum imapc_capability imapc_capability_lookup(const char *str); + #endif