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.
This commit is contained in:
Jani Nikula 2016-09-13 20:14:15 +03:00 committed by David Bremner
parent 1e289ed1c9
commit 5e438d95c4

View file

@ -520,13 +520,17 @@ static GMimeMessage *
create_reply_message(void *ctx, create_reply_message(void *ctx,
notmuch_config_t *config, notmuch_config_t *config,
notmuch_message_t *message, 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 *subject, *from_addr = NULL;
const char *in_reply_to, *orig_references, *references; 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) { if (reply == NULL) {
fprintf (stderr, "Out of memory\n"); fprintf (stderr, "Out of memory\n");
return NULL; return NULL;
@ -549,6 +553,10 @@ create_reply_message(void *ctx,
from_addr = add_recipients_from_message (reply, config, from_addr = add_recipients_from_message (reply, config,
message, reply_all); 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 * Sadly, there is no standard way to find out to which email
* address a mail was delivered - what is in the headers depends * 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, &params->crypto, &node)) if (mime_node_open (ctx, message, &params->crypto, &node))
return 1; return 1;
reply = create_reply_message (ctx, config, message, reply_all); reply = create_reply_message (ctx, config, message, reply_all, FALSE);
if (!reply) if (!reply)
return 1; return 1;
@ -632,7 +640,7 @@ notmuch_reply_format_sprinter(void *ctx,
if (mime_node_open (ctx, message, &params->crypto, &node)) if (mime_node_open (ctx, message, &params->crypto, &node))
return 1; return 1;
reply = create_reply_message (ctx, config, message, reply_all); reply = create_reply_message (ctx, config, message, reply_all, FALSE);
if (!reply) if (!reply)
return 1; return 1;
@ -665,34 +673,10 @@ notmuch_reply_format_headers_only(void *ctx,
unused (sprinter_t *sp)) unused (sprinter_t *sp))
{ {
GMimeMessage *reply; GMimeMessage *reply;
const char *in_reply_to, *orig_references, *references;
/* The 0 means we do not want headers in a "pretty" order. */ reply = create_reply_message (ctx, config, message, reply_all, TRUE);
reply = g_mime_message_new (0); if (!reply)
if (reply == NULL) {
fprintf (stderr, "Out of memory\n");
return 1; 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); show_reply_headers (reply);