+/* Augments the recipients of reply from the headers of message.
+ *
+ * If any of the user's addresses were found in these headers, the first
+ * of these returned, otherwise NULL is returned.
+ */
+static const char *
+add_recipients_from_message (GMimeMessage *reply,
+ notmuch_config_t *config,
+ notmuch_message_t *message)
+{
+ static const struct {
+ const char *header;
+ const char *fallback;
+ GMimeRecipientType recipient_type;
+ } reply_to_map[] = {
+ { "reply-to", "from", GMIME_RECIPIENT_TYPE_TO },
+ { "to", NULL, GMIME_RECIPIENT_TYPE_TO },
+ { "cc", NULL, GMIME_RECIPIENT_TYPE_CC },
+ { "bcc", NULL, GMIME_RECIPIENT_TYPE_BCC }
+ };
+ const char *from_addr = NULL;
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (reply_to_map); i++) {
+ const char *addr, *recipients;
+
+ recipients = notmuch_message_get_header (message,
+ reply_to_map[i].header);
+ if ((recipients == NULL || recipients[0] == '\0') && reply_to_map[i].fallback)
+ recipients = notmuch_message_get_header (message,
+ reply_to_map[i].fallback);
+
+ addr = add_recipients_for_string (reply, config,
+ reply_to_map[i].recipient_type,
+ recipients);
+ if (from_addr == NULL)
+ from_addr = addr;
+ }
+ return from_addr;
+}
+