- format->thread_summary (thread,
- notmuch_thread_get_thread_id (thread),
- date,
- notmuch_thread_get_matched_messages (thread),
- notmuch_thread_get_total_messages (thread),
- notmuch_thread_get_authors (thread),
- notmuch_thread_get_subject (thread));
+ relative_date = notmuch_time_relative_date (ctx_quote, date);
+
+ if (format->is_text_printer) {
+ /* Special case for the text formatter */
+ printf ("thread:%s %12s [%d/%d] %s; %s (",
+ thread_id,
+ relative_date,
+ matched,
+ total,
+ sanitize_string (ctx_quote, authors),
+ sanitize_string (ctx_quote, subject));
+ } else { /* Structured Output */
+ format->map_key (format, "thread");
+ format->string (format, thread_id);
+ format->map_key (format, "timestamp");
+ format->integer (format, date);
+ format->map_key (format, "date_relative");
+ format->string (format, relative_date);
+ format->map_key (format, "matched");
+ format->integer (format, matched);
+ format->map_key (format, "total");
+ format->integer (format, total);
+ format->map_key (format, "authors");
+ format->string (format, authors);
+ format->map_key (format, "subject");
+ format->string (format, subject);
+ if (notmuch_format_version >= 2) {
+ char *matched_query, *unmatched_query;
+ if (get_thread_query (thread, &matched_query,
+ &unmatched_query) < 0) {
+ fprintf (stderr, "Out of memory\n");
+ return 1;
+ }
+ format->map_key (format, "query");
+ format->begin_list (format);
+ if (matched_query)
+ format->string (format, matched_query);
+ else
+ format->null (format);
+ if (unmatched_query)
+ format->string (format, unmatched_query);
+ else
+ format->null (format);
+ format->end (format);
+ }
+ }
+
+ talloc_free (ctx_quote);