--- mutt-0.95.4/protos.h.orig Sun Mar 28 20:19:44 1999 +++ mutt-0.95.4/protos.h Sun Mar 28 20:19:44 1999 @@ -75,6 +75,7 @@ ADDRESS *mutt_lookup_alias (const char *s); ADDRESS *mutt_remove_duplicates (ADDRESS *); +ADDRESS *mutt_reverse_address (ADDRESS *); ADDRESS *mutt_expand_aliases (ADDRESS *); ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *); --- mutt-0.95.4/send.c.orig Sun Mar 28 19:43:59 1999 +++ mutt-0.95.4/send.c Sun Mar 28 20:39:01 1999 @@ -556,6 +556,10 @@ /* 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 (OPTREVALIAS)){ + env->to = mutt_reverse_address (env->to); + env->cc = mutt_reverse_address (env->cc); + } env->cc = mutt_remove_xrefs (env->to, env->cc); if (curenv->real_subj) --- mutt-0.95.4/sendlib.c.orig Sun Mar 28 20:15:43 1999 +++ mutt-0.95.4/sendlib.c Sun Mar 28 22:43:16 1999 @@ -1882,6 +1882,37 @@ return (top); } +/* given a list of addresses, return a list of reverse_alias'ed addresses */ +ADDRESS *mutt_reverse_address (ADDRESS *addr) +{ + ADDRESS *top,*tmp,*ptr,*ali; + + if ((top=addr)==NULL) + return NULL; + + if ((ali = alias_reverse_lookup (top)) && ali->personal){ + tmp=rfc822_cpy_adr_real(ali); + tmp->next=top->next; + top->next=NULL; + rfc822_free_address(&top); + top=tmp; + } + + ptr=top; + while (top->next != NULL){ + tmp=top->next; + if ((ali = alias_reverse_lookup (tmp)) && ali->personal){ + top->next=rfc822_cpy_adr_real(ali); + top->next->next=tmp->next; + tmp->next=NULL; + rfc822_free_address(&tmp); + tmp=top->next; + } + top=tmp; + } + return ptr; +} + int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post, char *fcc) { CONTEXT f; --- mutt-0.94.7i/patchlist.c.orig Sat Sep 19 02:29:51 1998 +++ mutt-0.94.7i/patchlist.c Sat Sep 19 02:54:16 1998 @@ -16,6 +16,8 @@ + printf("Feature patch: reverse-reply 0.95.4 by Stefan `Sec` Zehl\n"); + /* DO NOT MODIFY AFTER THIS LINE */