X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-show.c;h=2fa229257ea99645d778a134c35861c3398665e5;hp=ec3e8618464b2ca49b5e16e61673a530e8c4a9c0;hb=60e79e3a9f1c8f054bd3f064714a9e92e8fe13b8;hpb=305a7ade1e20e162ff71a007e414ca301e4b90f5 diff --git a/notmuch-show.c b/notmuch-show.c index ec3e8618..2fa22925 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -37,11 +37,7 @@ format_part_json_entry (const void *ctx, sprinter_t *sp, mime_node_t *node, static const notmuch_show_format_t format_json = { .new_sprinter = sprinter_json_create, - .message_set_start = "[", .part = format_part_json_entry, - .message_set_sep = ", ", - .message_set_end = "]", - .null_message = "null" }; static notmuch_status_t @@ -114,6 +110,9 @@ _get_one_line_summary (const void *ctx, notmuch_message_t *message) static void format_message_json (sprinter_t *sp, notmuch_message_t *message) { + /* Any changes to the JSON format should be reflected in the file + * devel/schemata. */ + void *local = talloc_new (NULL); notmuch_tags_t *tags; time_t date; @@ -212,8 +211,12 @@ void format_headers_json (sprinter_t *sp, GMimeMessage *message, notmuch_bool_t reply) { + /* Any changes to the JSON format should be reflected in the file + * devel/schemata. */ + InternetAddressList *recipients; const char *recipients_string; + const char *reply_to_string; sp->begin_map (sp); @@ -237,6 +240,19 @@ format_headers_json (sprinter_t *sp, GMimeMessage *message, sp->string (sp, recipients_string); } + recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_BCC); + recipients_string = internet_address_list_to_string (recipients, 0); + if (recipients_string) { + sp->map_key (sp, "Bcc"); + sp->string (sp, recipients_string); + } + + reply_to_string = g_mime_message_get_reply_to (message); + if (reply_to_string) { + sp->map_key (sp, "Reply-To"); + sp->string (sp, reply_to_string); + } + if (reply) { sp->map_key (sp, "In-reply-to"); sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "In-reply-to")); @@ -349,6 +365,9 @@ signer_status_to_string (GMimeSignerStatus x) static void format_part_sigstatus_json (sprinter_t *sp, mime_node_t *node) { + /* Any changes to the JSON format should be reflected in the file + * devel/schemata. */ + GMimeSignatureList *siglist = node->sig_list; sp->begin_list (sp); @@ -961,11 +980,9 @@ do_show (void *ctx, notmuch_threads_t *threads; notmuch_thread_t *thread; notmuch_messages_t *messages; - int first_toplevel = 1; notmuch_status_t status, res = NOTMUCH_STATUS_SUCCESS; - if (format->message_set_start) - fputs (format->message_set_start, stdout); + sp->begin_list (sp); for (threads = notmuch_query_search_threads (query); notmuch_threads_valid (threads); @@ -979,10 +996,6 @@ do_show (void *ctx, INTERNAL_ERROR ("Thread %s has no toplevel messages.\n", notmuch_thread_get_thread_id (thread)); - if (!first_toplevel && format->message_set_sep) - fputs (format->message_set_sep, stdout); - first_toplevel = 0; - status = show_messages (ctx, format, sp, messages, 0, params); if (status && !res) res = status; @@ -991,8 +1004,7 @@ do_show (void *ctx, } - if (format->message_set_end) - fputs (format->message_set_end, stdout); + sp->end (sp); return res != NOTMUCH_STATUS_SUCCESS; }