diff options
Diffstat (limited to 'contrib/gmime-test.c')
| -rw-r--r-- | contrib/gmime-test.c | 57 |
1 files changed, 34 insertions, 23 deletions
diff --git a/contrib/gmime-test.c b/contrib/gmime-test.c index 2e797b3..12f27f6 100644 --- a/contrib/gmime-test.c +++ b/contrib/gmime-test.c @@ -46,13 +46,41 @@ get_recip (GMimeMessage *msg, GMimeRecipientType rtype) return recep; } +static gchar* +get_refs_str (GMimeMessage *msg) +{ + const gchar *str; + const GMimeReferences *cur; + GMimeReferences *mime_refs; + gchar *rv; + + str = g_mime_object_get_header (GMIME_OBJECT(msg), + "References"); + if (!str) + return NULL; + + mime_refs = g_mime_references_decode (str); + for (rv = NULL, cur = mime_refs; cur; + cur = g_mime_references_get_next(cur)) { + + const char* msgid; + msgid = g_mime_references_get_message_id (cur); + rv = g_strdup_printf ("%s%s%s", + rv ? rv : "", + rv ? "," : "", + msgid); + } + g_mime_references_free (mime_refs); + + return rv; +} static gboolean test_message (GMimeMessage *msg) { gchar *val; const gchar *str; - + g_print ("From : %s\n", g_mime_message_get_sender (msg)); val = get_recip (msg, GMIME_RECIPIENT_TYPE_TO); @@ -74,29 +102,12 @@ test_message (GMimeMessage *msg) g_print ("Msg-id : %s\n", str ? str : "<none>"); { - str = g_mime_object_get_header (GMIME_OBJECT(msg), - "References"); - /* get stuff from the 'references' header */ - if (str) { - const GMimeReferences *cur; - GMimeReferences *mime_refs; - - g_print ("Refs : "); - - mime_refs = g_mime_references_decode (str); - for (cur = mime_refs; cur; - cur = g_mime_references_get_next(cur)) { - - const char* msgid; - msgid = g_mime_references_get_message_id (cur); - g_print ("%s%s", - cur == mime_refs ? "" : ",", - msgid ? msgid : "<huh?>"); - } - g_print ("\n"); - g_mime_references_free (mime_refs); - } + gchar *refsstr; + refsstr = get_refs_str (msg); + g_print ("Refs : %s\n", refsstr ? refsstr : "<none>"); + g_free (refsstr); } + return TRUE; } |
