const char *
notmuch_thread_get_thread_id (notmuch_thread_t *thread);
+/* Get the authors of 'thread'
+ *
+ * The returned string is a comma-separated list of the names of the
+ * authors of mail messages in the query results that belong to this
+ * thread.
+ *
+ * The returned string belongs to 'thread' and as such, should not be
+ * modified by the caller and will only be valid for as long as the
+ * thread is valid, (which is until notmuch_thread_destroy or until
+ * the query from which it derived is destroyed).
+ */
+const char *
+notmuch_thread_get_authors (notmuch_thread_t *thread);
+
/* Get the subject of 'thread'
*
* The subject is taken from the first message (according to the query
#include <xapian.h>
+#include <gmime/gmime.h>
#include <glib.h> /* GHashTable */
struct _notmuch_thread {
notmuch_database_t *notmuch;
char *thread_id;
char *subject;
+ char *authors;
GHashTable *tags;
notmuch_bool_t has_message;
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);
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;
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)
{
date = notmuch_thread_get_oldest_date (thread);
relative_date = notmuch_time_relative_date (ctx, date);
- printf ("thread:%s %12s %s",
+ printf ("thread:%s %12s %s; %s",
notmuch_thread_get_thread_id (thread),
relative_date,
+ notmuch_thread_get_authors (thread),
notmuch_thread_get_subject (thread));
printf (" (");