X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-reply.c;h=c2d7402d40ae0874ff1bdec5bbe5a82024545e36;hp=5adbab624ad7a2cbb17a6a7b5a98b8feca8937f7;hb=1e289ed1c9fb8af8696c2735b714438bd115725f;hpb=a843fa48fedb7a3ce02af412404ba4359cdce5e0 diff --git a/notmuch-reply.c b/notmuch-reply.c index 5adbab62..c2d7402d 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -532,12 +532,19 @@ create_reply_message(void *ctx, return NULL; } - subject = notmuch_message_get_header (message, "subject"); - if (subject) { - if (strncasecmp (subject, "Re:", 3)) - subject = talloc_asprintf (ctx, "Re: %s", subject); - g_mime_message_set_subject (reply, subject); - } + 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"); + if (orig_references && *orig_references) + references = talloc_asprintf (ctx, "%s %s", orig_references, + in_reply_to); + else + references = talloc_strdup (ctx, in_reply_to); + + g_mime_object_set_header (GMIME_OBJECT (reply), "References", references); from_addr = add_recipients_from_message (reply, config, message, reply_all); @@ -572,25 +579,14 @@ create_reply_message(void *ctx, from_addr = talloc_asprintf (ctx, "%s <%s>", notmuch_config_get_user_name (config), from_addr); - g_mime_object_set_header (GMIME_OBJECT (reply), - "From", from_addr); - - 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); + g_mime_object_set_header (GMIME_OBJECT (reply), "From", from_addr); - orig_references = notmuch_message_get_header (message, "references"); - if (!orig_references) - /* Treat errors like missing References headers. */ - orig_references = ""; - 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); + subject = notmuch_message_get_header (message, "subject"); + if (subject) { + if (strncasecmp (subject, "Re:", 3)) + subject = talloc_asprintf (ctx, "Re: %s", subject); + g_mime_message_set_subject (reply, subject); + } return reply; } @@ -604,20 +600,20 @@ notmuch_reply_format_default(void *ctx, unused (sprinter_t *sp)) { GMimeMessage *reply; - mime_node_t *root; + mime_node_t *node; + + if (mime_node_open (ctx, message, ¶ms->crypto, &node)) + return 1; reply = create_reply_message (ctx, config, message, reply_all); if (!reply) return 1; show_reply_headers (reply); + format_part_reply (node); g_object_unref (G_OBJECT (reply)); - - if (mime_node_open (ctx, message, ¶ms->crypto, &root) == NOTMUCH_STATUS_SUCCESS) { - format_part_reply (root); - talloc_free (root); - } + talloc_free (node); return 0; } @@ -633,7 +629,7 @@ notmuch_reply_format_sprinter(void *ctx, GMimeMessage *reply; mime_node_t *node; - if (mime_node_open (ctx, message, ¶ms->crypto, &node) != NOTMUCH_STATUS_SUCCESS) + if (mime_node_open (ctx, message, ¶ms->crypto, &node)) return 1; reply = create_reply_message (ctx, config, message, reply_all); @@ -645,7 +641,6 @@ notmuch_reply_format_sprinter(void *ctx, /* The headers of the reply message we've created */ sp->map_key (sp, "reply-headers"); format_headers_sprinter (sp, reply, TRUE); - g_object_unref (G_OBJECT (reply)); /* Start the original */ sp->map_key (sp, "original"); @@ -654,6 +649,9 @@ notmuch_reply_format_sprinter(void *ctx, /* End */ sp->end (sp); + g_object_unref (G_OBJECT (reply)); + talloc_free (node); + return 0; }