X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-pair.c;h=05116a95e9b1e9c703ea9fccfe20a76c118adbfb;hp=0f67b847b4bd815d9e5db56310a54ed260c956ef;hb=2da007966ea445b3574320d9c914c7475df64c59;hpb=bc321ae5f719ae474bb91af2a5dc544f64ab7d80 diff --git a/src/modest-pair.c b/src/modest-pair.c index 0f67b84..05116a9 100644 --- a/src/modest-pair.c +++ b/src/modest-pair.c @@ -28,17 +28,18 @@ */ #include "modest-pair.h" +#include /* For strcmp() */ 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 +55,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 +70,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 ModestPair* pair_b = (const ModestPair*)b; + + return strcmp ((const gchar*)pair_a->first, (const gchar*)pair_b->first); +} + +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; }