]> granicus.if.org Git - neomutt/commitdiff
Let reply_to take precedence over C_ReplySelf 1863/head
authorPietro Cerutti <gahr@gahr.ch>
Mon, 30 Sep 2019 15:59:39 +0000 (15:59 +0000)
committerRichard Russon <rich@flatcap.org>
Tue, 8 Oct 2019 22:39:27 +0000 (23:39 +0100)
send.c

diff --git a/send.c b/send.c
index b936f7b31de2c52ed7b30adeeb234c97f0555643..84e927d829473c9bfd1ed7ec9c8f0a10dee4c72f 100644 (file)
--- a/send.c
+++ b/send.c
@@ -708,6 +708,20 @@ static int include_reply(struct Mailbox *m, struct Email *e, FILE *fp_out)
   return 0;
 }
 
+static const struct AddressList *choose_default_to(const struct Address *from, const struct Envelope *env)
+{
+  if (!C_ReplySelf && mutt_addr_is_user(from))
+  {
+    /* mail is from the user, assume replying to recipients */
+    return &env->to;
+  }
+  else
+  {
+    return &env->from;
+  }
+}
+
+
 /**
  * default_to - Generate default email addresses
  * @param[in,out] to      'To' address
@@ -734,12 +748,9 @@ static int default_to(struct AddressList *to, struct Envelope *env, SendFlags fl
   if (flags & SEND_LIST_REPLY)
     return 0;
 
-  if (!C_ReplySelf && mutt_addr_is_user(from))
-  {
-    /* mail is from the user, assume replying to recipients */
-    mutt_addrlist_copy(to, &env->to, true);
-  }
-  else if (reply_to)
+  const struct AddressList *default_to = choose_default_to(from, env);
+
+  if (reply_to)
   {
     const bool from_is_reply_to = mutt_addr_cmp(from, reply_to);
     const bool multiple_reply_to =
@@ -774,7 +785,7 @@ static int default_to(struct AddressList *to, struct Envelope *env, SendFlags fl
           break;
 
         case MUTT_NO:
-          mutt_addrlist_copy(to, &env->from, false);
+          mutt_addrlist_copy(to, default_to, false);
           break;
 
         default:
@@ -782,10 +793,14 @@ static int default_to(struct AddressList *to, struct Envelope *env, SendFlags fl
       }
     }
     else
+    {
       mutt_addrlist_copy(to, &env->reply_to, false);
+    }
   }
   else
-    mutt_addrlist_copy(to, &env->from, false);
+  {
+    mutt_addrlist_copy(to, default_to, false);
+  }
 
   return 0;
 }