X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-show.c;h=2fa229257ea99645d778a134c35861c3398665e5;hp=b9d9f5d208969a281911ad9be2115edd1f741242;hb=60e79e3a9f1c8f054bd3f064714a9e92e8fe13b8;hpb=26ba4abe535f5757d280401bc7de1cfacbd081b5 diff --git a/notmuch-show.c b/notmuch-show.c index b9d9f5d2..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); @@ -841,15 +860,6 @@ format_part_raw (unused (const void *ctx), unused (sprinter_t *sp), return NOTMUCH_STATUS_SUCCESS; } -static notmuch_status_t -show_null_message (const notmuch_show_format_t *format) -{ - /* Output a null message. Currently empty for all formats except Json */ - if (format->null_message) - printf ("%s", format->null_message); - return NOTMUCH_STATUS_SUCCESS; -} - static notmuch_status_t show_message (void *ctx, const notmuch_show_format_t *format, @@ -884,23 +894,16 @@ show_messages (void *ctx, notmuch_message_t *message; notmuch_bool_t match; notmuch_bool_t excluded; - int first_set = 1; int next_indent; notmuch_status_t status, res = NOTMUCH_STATUS_SUCCESS; - if (format->message_set_start) - fputs (format->message_set_start, stdout); + sp->begin_list (sp); for (; notmuch_messages_valid (messages); notmuch_messages_move_to_next (messages)) { - if (!first_set && format->message_set_sep) - fputs (format->message_set_sep, stdout); - first_set = 0; - - if (format->message_set_start) - fputs (format->message_set_start, stdout); + sp->begin_list (sp); message = notmuch_messages_get (messages); @@ -915,12 +918,9 @@ show_messages (void *ctx, res = status; next_indent = indent + 1; } else { - status = show_null_message (format); + sp->null (sp); } - if (!status && format->message_set_sep) - fputs (format->message_set_sep, stdout); - status = show_messages (ctx, format, sp, notmuch_message_get_replies (message), @@ -931,12 +931,10 @@ show_messages (void *ctx, notmuch_message_destroy (message); - if (format->message_set_end) - fputs (format->message_set_end, stdout); + sp->end (sp); } - if (format->message_set_end) - fputs (format->message_set_end, stdout); + sp->end (sp); return res; } @@ -982,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); @@ -1000,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; @@ -1012,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; }