summaryrefslogtreecommitdiff
path: root/contrib/gmime-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gmime-test.c')
-rw-r--r--contrib/gmime-test.c57
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;
}