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.
This commit is contained in:
Carl Worth 2009-10-14 13:30:33 -07:00
parent 1c63ec7031
commit be72bf3070

View file

@ -307,30 +307,22 @@ find_thread_id (Xapian::Database db,
* message. */ * message. */
static void static void
parse_references (GPtrArray *array, 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; return;
while (*refs) { refs = g_mime_references_decode (refs_str);
while (*refs && isspace (*refs))
refs++; for (r = refs; r; r = r->next) {
if (*refs == '<') message_id = g_mime_references_get_message_id (r);
refs++; g_ptr_array_add (array, g_strdup (message_id));
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;
} }
g_mime_references_free (refs);
} }
/* Given a string representing the body of a message, generate terms /* Given a string representing the body of a message, generate terms