* fix for the crash in NB#74605
[modest] / src / modest-protocol-info.c
index b0ce303..a771c01 100644 (file)
@@ -32,7 +32,7 @@
 #include <modest-protocol-info.h>
 #include <modest-pair.h>
 #include <modest-defs.h>
-
+#include <modest-text-utils.h>
 
 typedef struct {
        gint   proto;
@@ -66,7 +66,6 @@ static const ProtocolInfo AuthProtocolMap[] = {
        { MODEST_PROTOCOL_AUTH_CRAMMD5,       MODEST_ACCOUNT_AUTH_MECH_VALUE_CRAMMD5, N_("Cram MD5") }
 };
 
-
 static ModestPairList*
 get_protocol_pair_list (const ProtocolInfo* map, guint size)
 {
@@ -85,51 +84,72 @@ get_protocol_pair_list (const ProtocolInfo* map, guint size)
        return proto_list;
 }
 
+static gint
+get_protocol_by_name (const ProtocolInfo* map,
+                      guint size,
+                      const gchar* query_name,
+                      gint default_value,
+                      gboolean case_sensitive)
+{
+       guint i;
+
+       g_return_val_if_fail (map, default_value);
+       g_return_val_if_fail (query_name, default_value);
+       
+       for(i = 0; i < size; ++i)
+               if (modest_text_utils_utf8_strcmp (map[i].name, query_name,
+                                                  !case_sensitive) == 0)
+                       return map[i].proto;
+       
+       return default_value;
+}
 
 ModestPairList*
-modest_protocol_info_get_transport_store_protocol_pair_list ()
+modest_protocol_info_get_transport_store_protocol_pair_list (void)
 {
        return get_protocol_pair_list (TransportStoreProtocolMap,
                G_N_ELEMENTS(TransportStoreProtocolMap));
 }
 
 ModestPairList*
-modest_protocol_info_get_auth_protocol_pair_list ()
+modest_protocol_info_get_auth_protocol_pair_list (void)
 {
        return get_protocol_pair_list (AuthProtocolMap,
                G_N_ELEMENTS(AuthProtocolMap));
 }
 
 ModestPairList*
-modest_protocol_info_get_connection_protocol_pair_list ()
+modest_protocol_info_get_connection_protocol_pair_list (void)
 {
        return get_protocol_pair_list (ConnectionProtocolMap,
                G_N_ELEMENTS(ConnectionProtocolMap));
 }
        
-
 ModestTransportStoreProtocol
 modest_protocol_info_get_transport_store_protocol (const gchar* name)
 {
-       const ProtocolInfo *map = TransportStoreProtocolMap;
-       const guint size = G_N_ELEMENTS(TransportStoreProtocolMap);
-       int i;
-       
        g_return_val_if_fail (name, MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN);
        
-       g_return_val_if_fail (map, MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN);
+       return get_protocol_by_name(TransportStoreProtocolMap,
+                                   G_N_ELEMENTS(TransportStoreProtocolMap),
+                                   name,
+                                   MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN,
+                                   TRUE);
+}
 
-       for (i = 0; i != size; ++i) {
-               const ProtocolInfo info = map[i];
-               if (strcmp(name, info.name) == 0)
-                       return info.proto;
-       }
+ModestAuthProtocol
+modest_protocol_info_get_auth_protocol (const gchar* name)
+{
+       g_return_val_if_fail (name, MODEST_PROTOCOL_AUTH_NONE);
        
-       return MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
+       return get_protocol_by_name(AuthProtocolMap,
+                                   G_N_ELEMENTS(AuthProtocolMap),
+                                   name,
+                                   MODEST_PROTOCOL_AUTH_NONE,
+                                   FALSE);
 }
 
 
-
 /* get either the name or the display_name for the protocol */
 static const gchar*
 get_protocol_string (gint proto, const ProtocolInfo* map, guint size, gboolean get_name)