ports/81549: mail/mutt-devel: add reverse_reply patch

Ed Schouten ed at fxq.nl
Fri May 27 10:30:02 UTC 2005


>Number:         81549
>Category:       ports
>Synopsis:       mail/mutt-devel: add reverse_reply patch
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri May 27 10:30:01 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Ed Schouten
>Release:        5.4
>Organization:
>Environment:
FreeBSD palm.hoeg.nl 5.4-STABLE FreeBSD 5.4-STABLE #0: Fri May 20 09:31:40 CEST 2005     root at palm.hoeg.nl:/usr/obj/usr/src/sys/PALM  i386
>Description:
This patch adds support for Mutt's reverse_reply patch, which gives you the ability to set an option which tries to resolve the correct names when replying to an email message. So if someone emails to a group of people without specifying the names with the addresses and you already have some of them in your aliases, Mutt will add the name to the To: and Cc: headers when replying.

Something like reverse_alias, but then for replying to messages. The patch is based on:

http://www.df7cb.de/projects/mutt/reverse_reply/patch-1.5.6.cb.reverse_reply.2
>How-To-Repeat:
n/a
>Fix:
Below is a patch which should be applied to the ports tree to add a special build option called WITH_MUTT_REVERSE_REPLY_PATCH:

diff -ur --new-file ports/mail/mutt-devel.orig/Makefile ports/mail/mutt-devel/Makefile
--- ports/mail/mutt-devel.orig/Makefile	Wed May 25 19:03:42 2005
+++ ports/mail/mutt-devel/Makefile	Wed May 25 19:08:32 2005
@@ -93,6 +93,9 @@
 # If you do not want mutt to use the flock() function define:
 #  WITHOUT_MUTT_FLOCK
 #
+# If you want to enable reverse_reply option define:
+#  WITH_MUTT_REVERSE_REPLY_PATCH
+#
 
 PORTNAME=	mutt-devel
 PORTVERSION=	1.5.9
@@ -307,6 +310,11 @@
 .if defined(WITH_MUTT_ASPELL)
 pre-configure::
 	@${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-aspell
+.endif
+
+.if defined(WITH_MUTT_REVERSE_REPLY_PATCH)
+pre-configure::
+	@${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-reverse_reply
 .endif
 
 .if defined(WITHOUT_MUTT_FLOCK)
diff -ur --new-file ports/mail/mutt-devel.orig/files/extra-patch-reverse_reply ports/mail/mutt-devel/files/extra-patch-reverse_reply
--- ports/mail/mutt-devel.orig/files/extra-patch-reverse_reply	Thu Jan  1 01:00:00 1970
+++ ports/mail/mutt-devel/files/extra-patch-reverse_reply	Wed May 25 19:09:13 2005
@@ -0,0 +1,87 @@
+--- init.h.orig	2005-03-01 16:56:02.000000000 +0100
++++ init.h	2005-05-25 18:20:57.000000000 +0200
+@@ -2257,6 +2257,13 @@
+   ** possibly including eventual real names.  When it is unset, mutt will
+   ** override any such real names with the setting of the $realname variable.
+   */
++  { "reverse_reply",	DT_BOOL, R_NONE, OPTREVREPLY, 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, OPTRFC2047PARAMS, 0 },
+   /*
+   ** .pp
+--- mutt.h.orig	2005-02-28 16:13:57.000000000 +0100
++++ mutt.h	2005-05-25 18:20:57.000000000 +0200
+@@ -410,6 +410,7 @@
+   OPTREVALIAS,
+   OPTREVNAME,
+   OPTREVREAL,
++  OPTREVREPLY,
+   OPTRFC2047PARAMS,
+   OPTSAVEADDRESS,
+   OPTSAVEEMPTY,
+--- protos.h.orig	2005-02-01 09:59:02.000000000 +0100
++++ protos.h	2005-05-25 18:20:57.000000000 +0200
+@@ -84,6 +84,7 @@
+ 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_expand_aliases (ADDRESS *);
+ ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);
+ 
+--- send.c.orig	2005-02-03 19:47:53.000000000 +0100
++++ send.c	2005-05-25 18:20:57.000000000 +0200
+@@ -588,6 +588,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 (OPTREVREPLY)){
++	env->to = mutt_reverse_address (env->to);
++	env->cc = mutt_reverse_address (env->cc);
++  }
+   env->cc = mutt_remove_xrefs (env->to, env->cc);
+ }
+ 
+--- sendlib.c.orig	2005-02-21 05:45:57.000000000 +0100
++++ sendlib.c	2005-05-25 18:20:57.000000000 +0200
+@@ -2341,6 +2341,35 @@
+   }
+ }
+ 
++/* 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, HEADER *hdr, const char *msgid, int post, char *fcc)
+ {
+   CONTEXT f;
>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list