Modified webpage: now tinymail repository is in gitorious.
[modest] / src / modest-pair.c
index 0f67b84..208ce9a 100644 (file)
  */
 
 #include "modest-pair.h"
+#include <string.h> /* For strcmp() */
+#include <stdio.h>
 
 ModestPair*
 modest_pair_new     (gpointer first, gpointer second, gboolean own)
 {
        ModestPair *pair;
 
-       pair = g_new (ModestPair, 1);
+       pair = g_slice_new (ModestPair);
 
-       pair->first = first;
+       pair->first  = first;
        pair->second = second;
-       pair->own = own;
+       pair->own    = own;
        
        return pair;
 }
@@ -54,12 +56,13 @@ modest_pair_free (ModestPair *pair)
                g_free (pair->first);
                g_free (pair->second);
        }
-       g_free (pair);
+       
+       g_slice_free (ModestPair, pair);
 }
 
 
 
-ModestPairList*
+void
 modest_pair_list_free (ModestPairList *pairs)
 {
        ModestPairList *cursor = pairs;
@@ -68,5 +71,23 @@ modest_pair_list_free (ModestPairList *pairs)
                cursor = cursor->next;
        }
        g_slist_free (pairs);
-       return NULL;
+}
+
+static gint on_pair_compare_as_string(gconstpointer a, gconstpointer b)
+{
+       const ModestPair* pair_a = (const ModestPair*)a;
+  const gchar* target = (const gchar*)b;
+  
+       return strcmp ((const gchar*)pair_a->first, target);
+}
+
+ModestPair* modest_pair_list_find_by_first_as_string  (ModestPairList *pairs, 
+       const gchar* first)
+{
+       GSList *matching = g_slist_find_custom (pairs, (gconstpointer)first, 
+               on_pair_compare_as_string);
+       if (matching)
+               return (ModestPair*)matching->data;
+       else
+               return NULL;
 }