From be72bf30703c5df814d4f572c3d9132d39700b36 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Wed, 14 Oct 2009 13:30:33 -0700 Subject: [PATCH] Use gmime's own reference-parsing code. Here's another instance where I "knew" gmime must have support for some functionality, but not finding it, I rolled my own. Now that I found g_mime_references_decode I'm glad to drop my ugly code. --- notmuch-index-message.cc | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/notmuch-index-message.cc b/notmuch-index-message.cc index f7ea340f..1922dd37 100644 --- a/notmuch-index-message.cc +++ b/notmuch-index-message.cc @@ -307,30 +307,22 @@ find_thread_id (Xapian::Database db, * message. */ static void parse_references (GPtrArray *array, - const char *refs) + const char *refs_str) { - const char *end, *next; + GMimeReferences *refs, *r; + const char *message_id; - if (refs == NULL) + if (refs_str == NULL) return; - while (*refs) { - while (*refs && isspace (*refs)) - refs++; - if (*refs == '<') - refs++; - end = refs; - while (*end && !isspace (*end)) - end++; - next = end; - end--; - if (end > refs && *end == '>') - end--; - if (end > refs) { - g_ptr_array_add (array, g_strndup (refs, end - refs + 1)); - } - refs = next; + refs = g_mime_references_decode (refs_str); + + for (r = refs; r; r = r->next) { + message_id = g_mime_references_get_message_id (r); + g_ptr_array_add (array, g_strdup (message_id)); } + + g_mime_references_free (refs); } /* Given a string representing the body of a message, generate terms