From: Adam Wolfe Gordon <awg+notmuch@xvx.ca>
To: notmuch@notmuchmail.org
Subject: [PATCH v8 02/11] reply: Factor out reply creation
Date: Sun, 18 Mar 2012 10:32:34 -0600 [thread overview]
Message-ID: <1332088363-22476-3-git-send-email-awg+notmuch@xvx.ca> (raw)
In-Reply-To: <1332088363-22476-1-git-send-email-awg+notmuch@xvx.ca>
Factor out the creation of a reply message based on an original
message so it can be shared by different reply formats.
---
notmuch-reply.c | 104 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 62 insertions(+), 42 deletions(-)
diff --git a/notmuch-reply.c b/notmuch-reply.c
index 6b244e6..f1478cc 100644
--- a/notmuch-reply.c
+++ b/notmuch-reply.c
@@ -505,6 +505,61 @@ guess_from_received_header (notmuch_config_t *config, notmuch_message_t *message
return NULL;
}
+static GMimeMessage *
+create_reply_message(void *ctx,
+ notmuch_config_t *config,
+ notmuch_message_t *message,
+ notmuch_bool_t reply_all)
+{
+ 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);
+ if (reply == NULL) {
+ fprintf (stderr, "Out of memory\n");
+ 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);
+ }
+
+ from_addr = add_recipients_from_message (reply, config,
+ message, reply_all);
+
+ if (from_addr == NULL)
+ from_addr = guess_from_received_header (config, message);
+
+ if (from_addr == NULL)
+ from_addr = notmuch_config_get_user_primary_email (config);
+
+ 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);
+
+ orig_references = notmuch_message_get_header (message, "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);
+
+ return reply;
+}
+
static int
notmuch_reply_format_default(void *ctx,
notmuch_config_t *config,
@@ -515,8 +570,6 @@ notmuch_reply_format_default(void *ctx,
GMimeMessage *reply;
notmuch_messages_t *messages;
notmuch_message_t *message;
- const char *subject, *from_addr = NULL;
- const char *in_reply_to, *orig_references, *references;
const notmuch_show_format_t *format = &format_reply;
for (messages = notmuch_query_search_messages (query);
@@ -525,49 +578,16 @@ notmuch_reply_format_default(void *ctx,
{
message = notmuch_messages_get (messages);
- /* The 1 means we want headers in a "pretty" order. */
- reply = g_mime_message_new (1);
- if (reply == NULL) {
- fprintf (stderr, "Out of memory\n");
- return 1;
- }
+ reply = create_reply_message (ctx, config, message, reply_all);
- 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);
+ /* If reply creation failed, we're out of memory, so don't
+ * bother trying any more messages.
+ */
+ if (!reply) {
+ notmuch_message_destroy (message);
+ return 1;
}
- from_addr = add_recipients_from_message (reply, config, message,
- reply_all);
-
- if (from_addr == NULL)
- from_addr = guess_from_received_header (config, message);
-
- if (from_addr == NULL)
- from_addr = notmuch_config_get_user_primary_email (config);
-
- 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);
-
- orig_references = notmuch_message_get_header (message, "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);
-
show_reply_headers (reply);
g_object_unref (G_OBJECT (reply));
--
1.7.5.4
next prev parent reply other threads:[~2012-03-18 16:33 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-12 4:05 [PATCH v7 00/10] Reply enhancements Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 01/10] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-13 16:49 ` Austin Clements
2012-03-13 16:51 ` Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 02/10] reply: Factor out reply creation Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 03/10] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 04/10] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 05/10] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 06/10] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 07/10] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 08/10] emacs: Factor out useful functions into notmuch-lib Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 09/10] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-12 4:05 ` [PATCH v7 10/10] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-13 17:02 ` Austin Clements
2012-03-13 17:47 ` Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 00/11] Reply enhancements, second attempt Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 01/11] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 02/11] reply: Factor out reply creation Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 03/11] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 04/11] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 05/11] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 06/11] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 07/11] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 08/11] emacs: Factor out useful functions into notmuch-lib Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 09/11] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 10/11] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-14 4:30 ` [PATCH v7.1 11/11] NEWS: news for reply enhancements Adam Wolfe Gordon
2012-03-18 13:22 ` David Bremner
2012-03-14 22:26 ` [PATCH v7.1 00/11] Reply enhancements, second attempt Austin Clements
2012-03-18 12:59 ` David Bremner
2012-03-18 16:32 ` [PATCH v8 00/11] Reply enhancements (rebased) Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 01/11] test: Add broken test for the new JSON reply format Adam Wolfe Gordon
2012-03-18 16:32 ` Adam Wolfe Gordon [this message]
2012-03-18 16:32 ` [PATCH v8 03/11] TODO: Add replying to multiple messages Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 04/11] reply: Add a JSON reply format Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 05/11] schemata: Add documentation for " Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 06/11] man: Update notmuch-reply man page for JSON format Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 07/11] man: Add --decrypt to reply flags Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 08/11] emacs: Factor out useful functions into notmuch-lib Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 09/11] test: Add broken tests for new emacs reply functionality Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 10/11] emacs: Use the new JSON reply format and message-cite-original Adam Wolfe Gordon
2012-03-18 16:32 ` [PATCH v8 11/11] NEWS: news for reply enhancements Adam Wolfe Gordon
2012-03-20 1:11 ` [PATCH v8 00/11] Reply enhancements (rebased) David Bremner
2012-03-17 19:13 ` [PATCH v7 00/10] Reply enhancements Jameson Graef Rollins
2012-03-17 19:33 ` Adam Wolfe Gordon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1332088363-22476-3-git-send-email-awg+notmuch@xvx.ca \
--to=awg+notmuch@xvx.ca \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).