X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fthread.cc;h=e85e2afdb19e3526615ec813fe2720bbb16a2726;hp=b67dfade5e16091fde964ddbafd69e1da6b5eb01;hb=2f4c5874747c58be04764a7c9a62f3b352e4f9fb;hpb=4d35c3544d7bb0143cb1a17cc197cfe271670bf8 diff --git a/lib/thread.cc b/lib/thread.cc index b67dfade..e85e2afd 100644 --- a/lib/thread.cc +++ b/lib/thread.cc @@ -23,12 +23,14 @@ #include +#include #include /* GHashTable */ struct _notmuch_thread { notmuch_database_t *notmuch; char *thread_id; char *subject; + char *authors; GHashTable *tags; notmuch_bool_t has_message; @@ -75,6 +77,7 @@ _notmuch_thread_create (const void *talloc_owner, thread->notmuch = notmuch; thread->thread_id = talloc_strdup (thread, thread_id); thread->subject = NULL; + thread->authors = NULL; thread->tags = g_hash_table_new_full (g_str_hash, g_str_equal, free, NULL); @@ -98,6 +101,32 @@ _notmuch_thread_add_message (notmuch_thread_t *thread, notmuch_tags_t *tags; const char *tag; time_t date; + InternetAddressList *list; + InternetAddress *address; + const char *from, *author; + + from = notmuch_message_get_header (message, "from"); + list = internet_address_list_parse_string (from); + if (list) { + address = internet_address_list_get_address (list, 0); + if (address) { + author = internet_address_get_name (address); + if (author == NULL) { + InternetAddressMailbox *mailbox; + mailbox = INTERNET_ADDRESS_MAILBOX (address); + author = internet_address_mailbox_get_addr (mailbox); + } + if (author) { + if (thread->authors) + thread->authors = talloc_asprintf (thread, "%s, %s", + thread->authors, + author); + else + thread->authors = talloc_strdup (thread, author); + } + } + g_object_unref (G_OBJECT (list)); + } if (! thread->subject) { const char *subject; @@ -124,6 +153,12 @@ _notmuch_thread_add_message (notmuch_thread_t *thread, thread->has_message = 1; } +const char * +notmuch_thread_get_authors (notmuch_thread_t *thread) +{ + return thread->authors; +} + const char * notmuch_thread_get_subject (notmuch_thread_t *thread) {