[notmuch] [RFC] improved display of message/rfc822 parts

2010-02-12 Thread David Edmondson
I seem to get a lot of forwarded message/rfc822 parts and the default
formatting (which is to inline the contents of the included message) is
very confusing.

Attached is a patch which attempts to improve this. Given that I'm new
to notmuch hacking, any comments would be appreciated.

-- next part --
A non-text attachment was scrubbed...
Name: 0001-show-Make-message-rfc822-parts-explicit-in-show-outp.patch
Type: text/x-diff
Size: 1743 bytes
Desc: not available
URL: 

-- next part --

dme.
-- 
David Edmondson, http://dme.org


[notmuch] [RFC] improved display of message/rfc822 parts

2010-02-12 Thread David Edmondson
I seem to get a lot of forwarded message/rfc822 parts and the default
formatting (which is to inline the contents of the included message) is
very confusing.

Attached is a patch which attempts to improve this. Given that I'm new
to notmuch hacking, any comments would be appreciated.

>From 7fd7ad00f4b8f8a2610eb1598a1c0bb4351e Mon Sep 17 00:00:00 2001
From: David Edmondson 
Date: Fri, 12 Feb 2010 15:01:06 +
Subject: [PATCH] show: Make message/rfc822 parts explicit in show output.
 show: Display header information for message/rfc822 parts.

---
 notmuch-show.c |   32 
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/notmuch-show.c b/notmuch-show.c
index 376aacd..6f12560 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -97,6 +97,34 @@ show_part_content (GMimeObject *part)
 }
 
 static void
+show_message_rfc822 (GMimeObject *part, int *part_count,
+		 void (*show_part) (GMimeObject *part, int *part_count))
+{
+GMimeMessage *message;
+const char *headers[] = {
+	"Subject", "From", "To", "Cc", "Bcc", "Date"
+};
+const char *name, *value;
+unsigned int i;
+
+*part_count = *part_count + 1;
+
+message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (part));
+
+printf ("\n");
+for (i = 0; i < ARRAY_SIZE (headers); i++) {
+	name = headers[i];
+	value = g_mime_object_get_header (GMIME_OBJECT (message), name);
+	if (value)
+	printf ("%s: %s\n", name, value);
+}
+printf ("\n");
+
+show_part (g_mime_message_get_mime_part (message),
+	   part_count);
+}
+
+static void
 show_part (GMimeObject *part, int *part_count)
 {
 GMimeContentDisposition *disposition;
@@ -137,6 +165,10 @@ show_part (GMimeObject *part, int *part_count)
 {
 	show_part_content (part);
 }
+else if (g_mime_content_type_is_type (content_type, "message", "rfc822"))
+{
+	show_message_rfc822 (part, part_count, show_part);
+}
 else
 {
 	printf ("Non-text part: %s\n",
-- 
1.6.6.1


dme.
-- 
David Edmondson, http://dme.org
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch