ports/mail/mutt/files/extra-patch-reverse_reply
2022-06-06 22:13:18 -04:00

93 lines
2.8 KiB
Text

--- PATCHES.orig 2022-06-05 20:10:54 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.6.cb.reverse_reply.2
--- init.h.orig 2022-06-05 20:10:54 UTC
+++ init.h
@@ -3431,6 +3431,13 @@ struct option_t MuttVars[] = {
** In either case, a missing real name will be filled in afterwards
** using the value of $$realname.
*/
+ { "reverse_reply", DT_BOOL, R_NONE, {.l=OPTREVREPLY}, {.l=0} },
+ /*
+ ** .pp
+ ** When set, this variable uses the name from your aliases in the To and Cc
+ ** headers of reply mails you send, like $reverse_alias does in the index.
+ ** When unset, the headers taken from the original mail are left unchanged.
+ */
{ "rfc2047_parameters", DT_BOOL, R_NONE, {.l=OPTRFC2047PARAMS}, {.l=1} },
/*
** .pp
--- mutt.h.orig 2022-06-05 20:10:54 UTC
+++ mutt.h
@@ -538,6 +538,7 @@ enum
OPTREVALIAS,
OPTREVNAME,
OPTREVREAL,
+ OPTREVREPLY,
OPTRFC2047PARAMS,
OPTSAVEADDRESS,
OPTSAVEEMPTY,
--- protos.h.orig 2022-05-21 16:36:29 UTC
+++ protos.h
@@ -86,6 +86,7 @@ char* mutt_extract_message_id (const char *, const cha
ADDRESS *mutt_get_address (ENVELOPE *, char **);
ADDRESS *mutt_lookup_alias (const char *s);
ADDRESS *mutt_remove_duplicates (ADDRESS *);
+ADDRESS *mutt_reverse_address (ADDRESS *);
ADDRESS *mutt_remove_adrlist_group_delimiters (ADDRESS *);
ADDRESS *mutt_expand_aliases (ADDRESS *);
ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);
--- send.c.orig 2022-05-11 16:57:07 UTC
+++ send.c
@@ -744,6 +744,10 @@ void mutt_fix_reply_recipients (ENVELOPE *env)
/* the CC field can get cluttered, especially with lists */
env->to = mutt_remove_duplicates (env->to);
env->cc = mutt_remove_duplicates (env->cc);
+ if (option (OPTREVREPLY)){
+ env->to = mutt_reverse_address (env->to);
+ env->cc = mutt_reverse_address (env->cc);
+ }
env->cc = mutt_remove_xrefs (env->to, env->cc);
if (env->cc && !env->to)
--- sendlib.c.orig 2022-05-27 21:24:33 UTC
+++ sendlib.c
@@ -3108,6 +3108,37 @@ static void set_noconv_flags (BODY *b, short flag)
}
}
+/* given a list of addresses, return a list of reverse_alias'ed addresses */
+ADDRESS *mutt_reverse_address (ADDRESS *addr)
+{
+ ADDRESS *top,*tmp,*alias;
+
+ if (addr == NULL)
+ return NULL;
+
+ if ((alias = alias_reverse_lookup (addr)) && alias->personal) {
+ tmp = rfc822_cpy_adr_real(alias);
+ tmp->next = addr->next;
+ addr->next = NULL;
+ rfc822_free_address(&addr);
+ addr = tmp;
+ }
+
+ for (top = addr; top->next != NULL; top = tmp) {
+ tmp = top->next;
+ if ((alias = alias_reverse_lookup (tmp)) && alias->personal) {
+ top->next = rfc822_cpy_adr_real(alias);
+ top->next->next = tmp->next;
+ tmp->next = NULL;
+ rfc822_free_address(&tmp);
+ tmp = top->next;
+ }
+ }
+ return addr;
+}
+
+
+
int mutt_write_fcc (const char *path, SEND_CONTEXT *sctx, const char *msgid, int post, const char *fcc)
{
HEADER *hdr;