Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 68870429E25 for ; Wed, 11 Jan 2012 17:49:48 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.7 X-Spam-Level: X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id If54rhDurTQW for ; Wed, 11 Jan 2012 17:49:47 -0800 (PST) Received: from dmz-mailsec-scanner-7.mit.edu (DMZ-MAILSEC-SCANNER-7.MIT.EDU [18.7.68.36]) by olra.theworths.org (Postfix) with ESMTP id B49A9431FB6 for ; Wed, 11 Jan 2012 17:49:46 -0800 (PST) X-AuditID: 12074424-b7fae6d000000906-f1-4f0e3c398ff9 Received: from mailhub-auth-4.mit.edu ( [18.7.62.39]) by dmz-mailsec-scanner-7.mit.edu (Symantec Messaging Gateway) with SMTP id 80.E3.02310.93C3E0F4; Wed, 11 Jan 2012 20:49:45 -0500 (EST) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id q0C1nj6m029648; Wed, 11 Jan 2012 20:49:45 -0500 Received: from drake.mit.edu (209-6-116-242.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com [209.6.116.242]) (authenticated bits=0) (User authenticated as amdragon@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q0C1ngH3001516 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT); Wed, 11 Jan 2012 20:49:44 -0500 (EST) Received: from amthrax by drake.mit.edu with local (Exim 4.77) (envelope-from ) id 1Rl9nS-00080F-My; Wed, 11 Jan 2012 20:49:42 -0500 From: Austin Clements To: notmuch@notmuchmail.org Subject: [RFC PATCH 5/5] show: Simplify new text formatter code Date: Wed, 11 Jan 2012 20:49:33 -0500 Message-Id: <1326332973-30225-6-git-send-email-amdragon@mit.edu> X-Mailer: git-send-email 1.7.7.3 In-Reply-To: <1326332973-30225-1-git-send-email-amdragon@mit.edu> References: <1326332973-30225-1-git-send-email-amdragon@mit.edu> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsUixG6nrmtpw+dv8GuVpMX1mzOZHRg9nq26 xRzAGMVlk5Kak1mWWqRvl8CV8X9xI3vBGY+KpVuSGxiXW3cxcnJICJhI/HiyhRXCFpO4cG89 WxcjF4eQwD5GiamrbjFBOBsYJVa9m8wO4dxnkmj/s5oZwpnPKDH77iFGkH42AQ2JbfuXg9ki AtISO+/OBprLwcEsICLxbiYTSFhYwF7i2KNzYGEWAVWJvle1IGFeAQeJEz3XWCCuUJA4t/oc O4jNKeAo0X/8GBuILQRU82LnU+YJjPwLGBlWMcqm5Fbp5iZm5hSnJusWJyfm5aUW6Zrr5WaW 6KWmlG5iBIeMi8oOxuZDSocYBTgYlXh4d+zl9RdiTSwrrsw9xCjJwaQkyvvdis9fiC8pP6Uy I7E4I76oNCe1+BCjBAezkgivUw1QOW9KYmVValE+TEqag0VJnFdD652fkEB6YklqdmpqQWoR TFaGg0NJgrfEGmioYFFqempFWmZOCUKaiYMTZDgP0PAMkBre4oLE3OLMdIj8KUZFKXFed5CE AEgiozQPrhcW068YxYFeEebNB6niAaYDuO5XQIOZgAZvWccDMrgkESEl1cBYdup0keXWmXMT Oxrm+1R4lktd+Jaw9FZg8IpKQ/uNT/z+zezw/l+dXq8WezNh2TEHqaP8TJMZZ6cY9l1uEDe+ nbPl4GHhk2qSO14uOfeO7+CDhTu0OL41nD5+5k9JUf7KmP8nebfsVHFkTYqpmMk4jcXi0MKP 2Wemv73185f1tHM6+k9UGtYzKbEUZyQaajEXFScCAI+/5ZrEAgAA X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Jan 2012 01:49:48 -0000 This makes the text formatter take advantage of the new code structure. The previously duplicated header logic is now unified, several things that we used to compute repeatedly across different callbacks are now computed once, and the code is generally simplified. Unifying the header logic causes this to format some dates slightly differently, so the two affected test cases are updated. --- notmuch-show.c | 84 ++++++++++++---------------------------------------- test/crypto | 2 +- test/thread-naming | 16 +++++----- 3 files changed, 28 insertions(+), 74 deletions(-) diff --git a/notmuch-show.c b/notmuch-show.c index 3241965..1689222 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -175,67 +175,42 @@ format_part_text (const void *ctx, mime_node_t *node, GMimeObject *meta = node->envelope_part ? GMIME_OBJECT (node->envelope_part) : node->part; GMimeContentType *content_type = g_mime_object_get_content_type (meta); + GMimeContentDisposition *disposition = + g_mime_object_get_content_disposition (meta); + notmuch_bool_t attachment = disposition && + strcmp (disposition->disposition, GMIME_DISPOSITION_ATTACHMENT) == 0; + notmuch_bool_t leaf = GMIME_IS_PART (node->part); int i; if (node->envelope_file) { notmuch_message_t *message = node->envelope_file; - const char *headers[] = { - "Subject", "From", "To", "Cc", "Bcc", "Date" - }; - const char *name, *value; - unsigned int i; - printf ("\fmessage{ "); - printf ("id:%s depth:%d match:%d filename:%s\n", + printf ("\fmessage{ id:%s depth:%d match:%d filename:%s\n", notmuch_message_get_message_id (message), indent, notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_MATCH), notmuch_message_get_filename (message)); - - printf ("\fheader{\n"); - - printf ("%s\n", _get_one_line_summary (ctx, message)); - - for (i = 0; i < ARRAY_SIZE (headers); i++) { - name = headers[i]; - value = notmuch_message_get_header (message, name); - if (value && strlen (value)) - printf ("%s: %s\n", name, value); - } - printf ("\fheader}\n"); } else { - GMimeContentDisposition *disposition = g_mime_object_get_content_disposition (meta); const char *cid = g_mime_object_get_content_id (meta); + const char *filename = leaf ? + g_mime_part_get_filename (GMIME_PART (node->part)) : NULL; - if (disposition && - strcmp (disposition->disposition, GMIME_DISPOSITION_ATTACHMENT) == 0) - { - printf ("\fattachment{ ID: %d", node->part_num); - - } else { - - printf ("\fpart{ ID: %d", node->part_num); - } - - if (GMIME_IS_PART (node->part)) - { - const char *filename = g_mime_part_get_filename (GMIME_PART (node->part)); - if (filename) - printf (", Filename: %s", filename); - } - + printf ("\f%s{ ID: %d", attachment ? "attachment" : "part", node->part_num); + if (filename) + printf (", Filename: %s", filename); if (cid) printf (", Content-id: %s", cid); - printf (", Content-type: %s\n", g_mime_content_type_to_string (content_type)); } - if (node->envelope_part) { + if (GMIME_IS_MESSAGE (node->part)) { GMimeMessage *message = GMIME_MESSAGE (node->part); InternetAddressList *recipients; const char *recipients_string; printf ("\fheader{\n"); + if (node->envelope_file) + printf ("%s\n", _get_one_line_summary (ctx, node->envelope_file)); printf ("Subject: %s\n", g_mime_message_get_subject (message)); printf ("From: %s\n", g_mime_message_get_sender (message)); recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO); @@ -248,9 +223,11 @@ format_part_text (const void *ctx, mime_node_t *node, printf ("Cc: %s\n", recipients_string); printf ("Date: %s\n", g_mime_message_get_date_as_string (message)); printf ("\fheader}\n"); + + printf ("\fbody{\n"); } - if (!node->envelope_file) { + if (leaf) { if (g_mime_content_type_is_type (content_type, "text", "*") && !g_mime_content_type_is_type (content_type, "text", "html")) { @@ -258,24 +235,12 @@ format_part_text (const void *ctx, mime_node_t *node, g_mime_stream_file_set_owner (GMIME_STREAM_FILE (stream_stdout), FALSE); show_text_part_content (node->part, stream_stdout); g_object_unref(stream_stdout); - } - else if (g_mime_content_type_is_type (content_type, "multipart", "*") || - g_mime_content_type_is_type (content_type, "message", "rfc822")) - { - /* Do nothing for multipart since its content will be printed - * when recursing. */ - } - else - { + } else { printf ("Non-text part: %s\n", g_mime_content_type_to_string (content_type)); } } - if (GMIME_IS_MESSAGE (node->part)) { - printf ("\fbody{\n"); - } - for (i = 0; i < node->nchildren; i++) format_part_text (ctx, mime_node_child (node, i), indent, params); @@ -286,18 +251,7 @@ format_part_text (const void *ctx, mime_node_t *node, if (node->envelope_file) { printf ("\fmessage}\n"); } else { - GMimeContentDisposition *disposition; - - disposition = g_mime_object_get_content_disposition (meta); - if (disposition && - strcmp (disposition->disposition, GMIME_DISPOSITION_ATTACHMENT) == 0) - { - printf ("\fattachment}\n"); - } - else - { - printf ("\fpart}\n"); - } + printf ("\f%s}\n", attachment ? "attachment" : "part"); } } diff --git a/test/crypto b/test/crypto index 0af4aa8..6723ef8 100755 --- a/test/crypto +++ b/test/crypto @@ -157,7 +157,7 @@ Notmuch Test Suite (2000-01-01) (encrypted inbox) Subject: test encrypted message 001 From: Notmuch Test Suite To: test_suite@notmuchmail.org -Date: 01 Jan 2000 12:00:00 -0000 +Date: Sat, 01 Jan 2000 12:00:00 +0000 header} body{ part{ ID: 1, Content-type: multipart/encrypted diff --git a/test/thread-naming b/test/thread-naming index 41b97d9..b7c96f2 100755 --- a/test/thread-naming +++ b/test/thread-naming @@ -71,7 +71,7 @@ Notmuch Test Suite (2001-01-05) (unread) Subject: thread-naming: Initial thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Fri, 05 Jan 2001 15:43:56 -0000 +Date: Fri, 05 Jan 2001 15:43:56 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -85,7 +85,7 @@ Notmuch Test Suite (2001-01-06) (inbox unread) Subject: thread-naming: Older changed subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Sat, 06 Jan 2001 15:43:56 -0000 +Date: Sat, 06 Jan 2001 15:43:56 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -99,7 +99,7 @@ Notmuch Test Suite (2001-01-07) (inbox unread) Subject: thread-naming: Newer changed subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Sun, 07 Jan 2001 15:43:56 -0000 +Date: Sun, 07 Jan 2001 15:43:56 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -113,7 +113,7 @@ Notmuch Test Suite (2001-01-08) (unread) Subject: thread-naming: Final thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Mon, 08 Jan 2001 15:43:56 -0000 +Date: Mon, 08 Jan 2001 15:43:56 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -127,7 +127,7 @@ Notmuch Test Suite (2001-01-09) (inbox unread) Subject: Re: thread-naming: Initial thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Tue, 09 Jan 2001 15:43:45 -0000 +Date: Tue, 09 Jan 2001 15:43:45 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -141,7 +141,7 @@ Notmuch Test Suite (2001-01-10) (inbox unread) Subject: Aw: thread-naming: Initial thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Wed, 10 Jan 2001 15:43:45 -0000 +Date: Wed, 10 Jan 2001 15:43:45 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -155,7 +155,7 @@ Notmuch Test Suite (2001-01-11) (inbox unread) Subject: Vs: thread-naming: Initial thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Thu, 11 Jan 2001 15:43:45 -0000 +Date: Thu, 11 Jan 2001 15:43:45 +0000 header} body{ part{ ID: 1, Content-type: text/plain @@ -169,7 +169,7 @@ Notmuch Test Suite (2001-01-12) (inbox unread) Subject: Sv: thread-naming: Initial thread subject From: Notmuch Test Suite To: Notmuch Test Suite -Date: Fri, 12 Jan 2001 15:43:45 -0000 +Date: Fri, 12 Jan 2001 15:43:45 +0000 header} body{ part{ ID: 1, Content-type: text/plain -- 1.7.7.3