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. */
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