X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-reply.c;h=7ac879f94419aa4d7783a0cb6d0be8912baad79b;hp=362e19872f6061192fbf2280f45ae7fd4eb8019f;hb=430fb27b3ef3a3c527084630d213db76be255e8e;hpb=a900ddaba661d693764d1a5f58f8b946bb788c4a diff --git a/notmuch-reply.c b/notmuch-reply.c index 362e1987..7ac879f9 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -24,13 +24,16 @@ #include "gmime-filter-reply.h" #include "gmime-filter-headers.h" +static void +reply_headers_message_part (GMimeMessage *message); + static void reply_part_content (GMimeObject *part); static const notmuch_show_format_t format_reply = { "", "", NULL, - "", NULL, "", + "", NULL, reply_headers_message_part, ">\n", "", NULL, NULL, @@ -62,13 +65,45 @@ show_reply_headers (GMimeMessage *message) } } +static void +reply_headers_message_part (GMimeMessage *message) +{ + InternetAddressList *recipients; + const char *recipients_string; + + printf ("> From: %s\n", g_mime_message_get_sender (message)); + recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO); + recipients_string = internet_address_list_to_string (recipients, 0); + if (recipients_string) + printf ("> To: %s\n", + recipients_string); + recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC); + recipients_string = internet_address_list_to_string (recipients, 0); + if (recipients_string) + printf ("> Cc: %s\n", + recipients_string); + printf ("> Subject: %s\n", g_mime_message_get_subject (message)); + printf ("> Date: %s\n", g_mime_message_get_date_as_string (message)); +} + + static void reply_part_content (GMimeObject *part) { GMimeContentType *content_type = g_mime_object_get_content_type (GMIME_OBJECT (part)); GMimeContentDisposition *disposition = g_mime_object_get_content_disposition (part); - if (g_mime_content_type_is_type (content_type, "text", "*") && + if (g_mime_content_type_is_type (content_type, "multipart", "*") || + g_mime_content_type_is_type (content_type, "message", "rfc822")) + { + /* Output nothing, since multipart subparts will be handled individually. */ + } + else if (g_mime_content_type_is_type (content_type, "application", "pgp-encrypted") || + g_mime_content_type_is_type (content_type, "application", "pgp-signature")) + { + /* Ignore PGP/MIME cruft parts */ + } + else if (g_mime_content_type_is_type (content_type, "text", "*") && !g_mime_content_type_is_type (content_type, "text", "html")) { GMimeStream *stream_stdout = NULL, *stream_filter = NULL; @@ -593,6 +628,8 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) params.part = -1; params.cryptoctx = NULL; + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { i++;