From 5e438d95c4671844cf4fddbd16c5744f41cda85c Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Tue, 13 Sep 2016 20:14:15 +0300 Subject: [PATCH] cli/reply: reuse create_reply_message() also for headers-only format Add an option for "limited" headers for the (slightly misleadingly named) headers-only format. There should be no functional changes. --- notmuch-reply.c | 46 +++++++++++++++------------------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/notmuch-reply.c b/notmuch-reply.c index c2d7402d..daad453e 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -520,13 +520,17 @@ static GMimeMessage * create_reply_message(void *ctx, notmuch_config_t *config, notmuch_message_t *message, - notmuch_bool_t reply_all) + notmuch_bool_t reply_all, + notmuch_bool_t limited) { const char *subject, *from_addr = NULL; const char *in_reply_to, *orig_references, *references; - /* The 1 means we want headers in a "pretty" order. */ - GMimeMessage *reply = g_mime_message_new (1); + /* + * Use the below header order for limited headers, "pretty" order + * otherwise. + */ + GMimeMessage *reply = g_mime_message_new (limited ? 0 : 1); if (reply == NULL) { fprintf (stderr, "Out of memory\n"); return NULL; @@ -549,6 +553,10 @@ create_reply_message(void *ctx, from_addr = add_recipients_from_message (reply, config, message, reply_all); + /* The above is all that is needed for limited headers. */ + if (limited) + return reply; + /* * Sadly, there is no standard way to find out to which email * address a mail was delivered - what is in the headers depends @@ -605,7 +613,7 @@ notmuch_reply_format_default(void *ctx, if (mime_node_open (ctx, message, ¶ms->crypto, &node)) return 1; - reply = create_reply_message (ctx, config, message, reply_all); + reply = create_reply_message (ctx, config, message, reply_all, FALSE); if (!reply) return 1; @@ -632,7 +640,7 @@ notmuch_reply_format_sprinter(void *ctx, if (mime_node_open (ctx, message, ¶ms->crypto, &node)) return 1; - reply = create_reply_message (ctx, config, message, reply_all); + reply = create_reply_message (ctx, config, message, reply_all, FALSE); if (!reply) return 1; @@ -665,34 +673,10 @@ notmuch_reply_format_headers_only(void *ctx, unused (sprinter_t *sp)) { GMimeMessage *reply; - const char *in_reply_to, *orig_references, *references; - /* The 0 means we do not want headers in a "pretty" order. */ - reply = g_mime_message_new (0); - if (reply == NULL) { - fprintf (stderr, "Out of memory\n"); + reply = create_reply_message (ctx, config, message, reply_all, TRUE); + if (!reply) return 1; - } - - in_reply_to = talloc_asprintf (ctx, "<%s>", - notmuch_message_get_message_id (message)); - - g_mime_object_set_header (GMIME_OBJECT (reply), "In-Reply-To", in_reply_to); - - orig_references = notmuch_message_get_header (message, "references"); - - /* - * We print In-Reply-To followed by References because git - * format-patch treats them specially. Git does not interpret the - * other headers specially. - */ - references = talloc_asprintf (ctx, "%s%s%s", - orig_references ? orig_references : "", - orig_references ? " " : "", - in_reply_to); - g_mime_object_set_header (GMIME_OBJECT (reply), "References", references); - - (void)add_recipients_from_message (reply, config, message, reply_all); show_reply_headers (reply);