diff --git a/notmuch-show.c b/notmuch-show.c index ef421ec7..c8771520 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -410,6 +410,11 @@ format_part_text (GMimeObject *part, int *part_count) show_part_content (part, stream_stdout); g_object_unref(stream_stdout); } + else if (g_mime_content_type_is_type (content_type, "multipart", "*")) + { + /* Do nothing for multipart since its content will be printed + * when recursing. */ + } else { printf ("Non-text part: %s\n", diff --git a/show-message.c b/show-message.c index b1b61be4..ff9146e2 100644 --- a/show-message.c +++ b/show-message.c @@ -30,6 +30,9 @@ show_message_part (GMimeObject *part, int *part_count, GMimeMultipart *multipart = GMIME_MULTIPART (part); int i; + *part_count = *part_count + 1; + (*show_part) (part, part_count); + for (i = 0; i < g_mime_multipart_get_count (multipart); i++) { show_message_part (g_mime_multipart_get_part (multipart, i), part_count, show_part); diff --git a/test/emacs.expected-output/notmuch-show-thread-maildir-storage b/test/emacs.expected-output/notmuch-show-thread-maildir-storage index 086f8740..6eed85b8 100644 --- a/test/emacs.expected-output/notmuch-show-thread-maildir-storage +++ b/test/emacs.expected-output/notmuch-show-thread-maildir-storage @@ -3,6 +3,9 @@ Subject: [notmuch] Working with Maildir storage? To: notmuch@notmuchmail.org Date: Tue, 17 Nov 2009 14:00:54 -0500 +[ multipart/mixed ] +[ multipart/signed ] +[ text/plain ] I saw the LWN article and decided to take a look at notmuch. I'm currently using mutt and mairix to index and read a collection of Maildir mail folders (around 40,000 messages total). @@ -41,6 +44,9 @@ http://notmuchmail.org/mailman/listinfo/notmuch To: notmuch@notmuchmail.org Date: Wed, 18 Nov 2009 01:02:38 +0600 + [ multipart/mixed ] + [ multipart/signed ] + [ text/plain ] Twas brillig at 14:00:54 17.11.2009 UTC-05 when lars@seas.harvard.edu did gyre and gimble: @@ -68,6 +74,9 @@ http://notmuchmail.org/mailman/listinfo/notmuch Cc: notmuch@notmuchmail.org Date: Tue, 17 Nov 2009 15:33:01 -0500 + [ multipart/mixed ] + [ multipart/signed ] + [ text/plain ] > See the patch just posted here. Is the list archived anywhere? The obvious archives @@ -148,6 +157,9 @@ http://notmuchmail.org/mailman/listinfo/notmuch Cc: notmuch@notmuchmail.org Date: Tue, 17 Nov 2009 19:50:40 -0500 + [ multipart/mixed ] + [ multipart/signed ] + [ text/plain ] > I've also pushed a slightly more complicated (and complete) fix to my > private notmuch repository diff --git a/test/multipart b/test/multipart index dde25abc..ef9a8a2e 100755 --- a/test/multipart +++ b/test/multipart @@ -58,19 +58,23 @@ To: cworth@cworth.org Date: Tue, 05 Jan 2001 15:43:57 -0000 header} body{ - part{ ID: 1, Content-type: text/plain + part{ ID: 1, Content-type: multipart/signed + part} + part{ ID: 2, Content-type: multipart/mixed + part} + part{ ID: 3, Content-type: text/plain This is an inline text part. part} - attachment{ ID: 2, Content-type: text/plain + attachment{ ID: 4, Content-type: text/plain Attachment: attachment (text/plain) This is a text attachment. attachment} - part{ ID: 3, Content-type: text/plain + part{ ID: 5, Content-type: text/plain And this message is signed. -Carl part} - part{ ID: 4, Content-type: application/pgp-signature + part{ ID: 6, Content-type: application/pgp-signature Non-text part: application/pgp-signature part} body} @@ -78,7 +82,7 @@ Non-text part: application/pgp-signature test_begin_subtest "Show multipart MIME message (--format=json)" output=$(notmuch show --format=json 'id:87liy5ap00.fsf@yoom.home.cworth.org') -test_expect_equal "$output" '[[[{"id": "87liy5ap00.fsf@yoom.home.cworth.org", "match": true, "filename": "/home/cworth/src/notmuch/test/tmp.multipart/mail/multipart", "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["attachment","inbox","unread"], "headers": {"Subject": "Multipart message", "From": "Carl Worth ", "To": "cworth@cworth.org", "Cc": "", "Bcc": "", "Date": "Tue, 05 Jan 2001 15:43:57 -0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "This is an inline text part.\n"}, {"id": 2, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 3, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}, {"id": 4, "content-type": "application/pgp-signature"}]}, []]]]' +test_expect_equal "$output" '[[[{"id": "87liy5ap00.fsf@yoom.home.cworth.org", "match": true, "filename": "/home/cworth/src/notmuch/test/tmp.multipart/mail/multipart", "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["attachment","inbox","unread"], "headers": {"Subject": "Multipart message", "From": "Carl Worth ", "To": "cworth@cworth.org", "Cc": "", "Bcc": "", "Date": "Tue, 05 Jan 2001 15:43:57 -0000"}, "body": [{"id": 1, "content-type": "multipart/signed"}, {"id": 2, "content-type": "multipart/mixed"}, {"id": 3, "content-type": "text/plain", "content": "This is an inline text part.\n"}, {"id": 4, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 5, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}, {"id": 6, "content-type": "application/pgp-signature"}]}, []]]]' test_done