Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Sep 2002 18:10:39 +0200 (CEST)
From:      Udo Schweigert <udo.schweigert@siemens.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        Dale Woolridge <dale@woolridge.ca>
Subject:   ports/42328: maintainer update of mail/mutt-devel
Message-ID:  <200209021610.g82GAdxB068358@alaska.cert.siemens.de>

next in thread | raw e-mail | index | archive | help

>Number:         42328
>Category:       ports
>Synopsis:       maintainer update of mail/mutt-devel
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Sep 02 09:20:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Udo Schweigert
>Release:        FreeBSD 4.7-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD alaska.cert.siemens.de 4.7-PRERELEASE FreeBSD 4.7-PRERELEASE #14: Mon Sep 2 14:14:05 CEST 2002 ust@alaska.cert.siemens.de:/usr/obj/work/src/RELENG_4/sys/alaska i386

>Description:

Maintainer update of mail/mutt-devel:

	- Add two new knobs: WITH_MUTT_PGP_PATCH and WITH_MUTT_MBOX_HOOK_PATCH
	  Patches submitted by Dale Woolridge <dale@woolridge.ca>.

	- Fix sgmlformat dependency handling if manual.sgml is changed by
	  one of the knobs.

	- Bump portrevision.

Committer: new file (cvs add) files/extra-patch-pgp-dw

>How-To-Repeat:
>Fix:

diff -ru  /usr/ports/mail/mutt-devel/Makefile ./Makefile
--- /usr/ports/mail/mutt-devel/Makefile	Fri Aug 30 14:32:58 2002
+++ ./Makefile	Mon Sep  2 17:58:32 2002
@@ -56,12 +56,19 @@
 # If you want to use the signature menu define:
 #  WITH_MUTT_SIGNATURE_MENU
 #
+# If you want to use enhanced pgp features define:
+#  WITH_MUTT_PGP_PATCH
+#
+# If you want to use the printf-like enhancement to the mbox-hook command
+# define:
+#  WITH_MUTT_MBOX_HOOK_PATCH
+#
 # If you want to use the ifdef feature define:
 #  WITH_MUTT_IFDEF_PATCH
 
 PORTNAME=	mutt-devel
 PORTVERSION=	1.5.1
-PORTREVISION?=	2
+PORTREVISION?=	3
 CATEGORIES+=	mail
 .if defined(WITH_MUTT_NNTP)
 CATEGORIES+=	news
@@ -104,6 +111,9 @@
 		defined(WITH_MUTT_IFDEF_PATCH)
 PATCH_SITES+=	http://cedricduval.free.fr/download/mutt/
 .endif
+.if defined(WITH_MUTT_MBOX_HOOK_PATCH) 
+PATCH_SITES+=	http://home.woolridge.ca/mutt/patches/
+.endif
 
 # XXX
 # this should be done automagically by aclocal but ....
@@ -167,6 +177,11 @@
 .if defined(WITH_MUTT_CYRUS_SASL)
 LIB_DEPENDS+=	sasl.8:${PORTSDIR}/security/cyrus-sasl
 .endif
+.if defined(WITH_MUTT_PGP_PATCH)
+SGML_NEEDED=	yes
+pre-configure::
+	${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-pgp-dw
+.endif
 .if defined(WITHOUT_MUTT_SMIME_OUTLOOK_COMPAT)
 pre-configure::
 	${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-smime-no-outlook
@@ -192,27 +207,33 @@
 .if defined(WITH_MUTT_COMPRESSED_FOLDERS)
 PATCHFILES+=	patch-${PATCH_VERSION}.rr.compressed.gz
 CONFIGURE_ARGS+=	--enable-compressed
-.if !defined(WITHOUT_MUTT_SGMLFORMAT)
-SGML_USED=	yes
-.endif
+SGML_NEEDED=	yes
 .endif
 .if defined(WITH_MUTT_NNTP)
 PATCHFILES+=	patch-${PATCH_VERSION}.vvv.nntp.gz
 CONFIGURE_ARGS+=	--enable-nntp
+SGML_NEEDED=	yes
 .endif
 .if defined(WITH_MUTT_QUOTE_PATCH)
 PATCHFILES+=	patch-${PATCH_VERSION}.vvv.initials.gz \
 		patch-${PATCH_VERSION}.vvv.quote.gz
+SGML_NEEDED=	yes
 .endif
 .if defined(WITH_MUTT_EDIT_THREADS)
 PATCHFILES+=	patch-${PATCH_VERSION}.cd.edit_threads.9.2
 CONFIGURE_ARGS+=	--enable-imap-edit-threads
+SGML_NEEDED=	yes
 .endif
 .if defined(WITH_MUTT_SIGNATURE_MENU)
 PATCHFILES+=	patch-${PATCH_VERSION}.cd.signatures_menu.2.1
+SGML_NEEDED=	yes
 .endif
 .if defined(WITH_MUTT_IFDEF_PATCH)
 PATCHFILES+=	patch-${PATCH_VERSION}.cd.ifdef.1
+SGML_NEEDED=	yes
+.endif
+.if defined(WITH_MUTT_MBOX_HOOK_PATCH)
+PATCHFILES+=	patch-1.5.1.dw.mbox-hook.1
 .endif
 
 WRKSRC=		${WRKDIR}/${DISTNAME:S/i$//}
@@ -245,6 +266,9 @@
 .if defined(WITH_MUTT_IFDEF_PATCH)
 SCRIPTS_ENV+=	MUTT_IFDEF_PATCH="yes"
 .endif
+.if defined(WITH_MUTT_PGP_PATCH)
+SCRIPTS_ENV+=	MUTT_PGP_PATCH="yes"
+.endif
 .if defined(WITH_MUTT_HTML)
 SCRIPTS_ENV+=	MUTT_HTML="yes"
 .endif
@@ -255,10 +279,10 @@
 	${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-doc-ref
 	printf ",s|\$${PREFIX}|%s|g\nw\nq\n" ${PREFIX} | \
 		ed -s ${WRKSRC}/doc/mutt.man
-.if defined(WITH_MUTT_NNTP) && !defined(WITHOUT_MUTT_SGMLFORMAT)
+.if defined(WITH_MUTT_HTML)
 SGML_USED=	yes
 .endif
-.if defined(WITH_MUTT_HTML)
+.if defined(SGML_NEEDED) && !defined(WITHOUT_MUTT_SGMLFORMAT)
 SGML_USED=	yes
 .endif
 .else 	# ! NOPORTDOCS
diff -ru  /usr/ports/mail/mutt-devel/distinfo ./distinfo
--- /usr/ports/mail/mutt-devel/distinfo	Wed Aug 14 00:05:04 2002
+++ ./distinfo	Mon Sep  2 18:02:11 2002
@@ -6,3 +6,4 @@
 MD5 (mutt/patch-1.5.1.cd.edit_threads.9.2) = cbbae803c62b3304cac76a6185745f8f
 MD5 (mutt/patch-1.5.1.cd.signatures_menu.2.1) = 599637b340de9d57ce75545384ad51f3
 MD5 (mutt/patch-1.5.1.cd.ifdef.1) = 3ee107f5ce66f7fb6a5bab698c5b7f90
+MD5 (mutt/patch-1.5.1.dw.mbox-hook.1) = 2a04bc3bae302ed106c1f320398b902f
diff -ru  /usr/ports/mail/mutt-devel/files/extra-patch-pgp-dw ./files/extra-patch-pgp-dw
--- /usr/ports/mail/mutt-devel/files/extra-patch-pgp-dw	Thu Jan  1 01:00:00 1970
+++ ./files/extra-patch-pgp-dw	Mon Sep  2 17:46:52 2002
@@ -0,0 +1,342 @@
+Base: http://home.woolridge.ca/mutt/patches/patch-1.5.1.dw.pgp-hook.3
+--- PATCHES	24 Jan 2002 12:10:47 -0000	3.0
++++ PATCHES	31 Aug 2002 22:01:56 -0000
+@@ -0,0 +1 @@
++patch-1.5.1.dw.pgp-hook.3
+--- hook.c	5 Feb 2002 21:30:31 -0000	3.3
++++ hook.c	31 Aug 2002 22:01:56 -0000
+@@ -118,7 +118,11 @@ int mutt_parse_hook (BUFFER *buf, BUFFER
+ 	ptr->rx.not == not &&
+ 	!mutt_strcmp (pattern.data, ptr->rx.pattern))
+     {
++#ifdef M_CRYPTHOOK
++      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_CRYPTHOOK))
++#else
+       if (data & (M_FOLDERHOOK | M_SENDHOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK))
++#endif /* M_CRYPTHOOK */
+       {
+ 	/* these hooks allow multiple commands with the same
+ 	 * pattern, so if we've already seen this pattern/command pair, just
+@@ -445,9 +449,25 @@ char *mutt_iconv_hook (const char *chs)
+ }
+ 
+ #if defined(HAVE_PGP) || defined(HAVE_SMIME)
+-char *mutt_crypt_hook (ADDRESS *adr)
++LIST *mutt_crypt_hook (ADDRESS *adr)
+ {
+-  return _mutt_string_hook (adr->mailbox, M_CRYPTHOOK);
++  HOOK *hook;
++  LIST *key_list = NULL;
++
++  if (!adr && !adr->mailbox)
++    return (NULL);
++
++  for (hook = Hooks; hook; hook = hook->next)
++  {
++    if (!hook->command)
++      continue;
++    if (!(hook->type & M_CRYPTHOOK))
++      continue;
++
++    if ((regexec (hook->rx.rx, adr->mailbox, 0, NULL, 0) == 0) ^ hook->rx.not)
++      key_list = mutt_add_list (key_list, hook->command);
++  }
++  return (key_list);
+ }
+ #endif /* HAVE_PGP */
+ 
+--- init.h	25 Apr 2002 13:26:26 -0000	3.15
++++ init.h	31 Aug 2002 22:01:57 -0000
+@@ -1180,6 +1180,16 @@ struct option_t MuttVars[] = {
+ 
+ #if defined(HAVE_PGP) || defined(HAVE_SMIME)
+ # ifdef HAVE_PGP
++  { "pgp_autoselectkey",	DT_SYN,  R_NONE, UL "crypt_autoselectkey", 0 },
++# endif
++  { "crypt_autoselectkey",	DT_BOOL, R_NONE, OPTCRYPTAUTOSELECT, 0 },
++  /*
++  ** .pp
++  ** If set, then a list of keys is not presented for selection when only
++  ** one matching key is available.  This may be useful in conjunction with
++  ** the \fIcrypt-hook\fP command (with ``$$crypt_confirmhook'' set).
++  */
++# ifdef HAVE_PGP
+   { "pgp_autosign", 	DT_SYN,  R_NONE, UL "crypt_autosign", 0 },
+ # endif  
+   { "crypt_autosign",	DT_BOOL, R_NONE, OPTCRYPTAUTOSIGN, 0 },
+@@ -1205,6 +1215,17 @@ struct option_t MuttVars[] = {
+   ** requested as well.  IF ``$$smime_is_default'' is set, then
+   ** OpenSSL is used instead to create S/MIME messages and settings can
+   ** be overridden by use of the \fIsmime-menu\fP.
++  */
++# ifdef HAVE_PGP
++  { "pgp_confirmhook",		DT_SYN, R_NONE, UL "crypt_confirmhook", 1 },
++# endif
++  { "crypt_confirmhook",	DT_BOOL, R_NONE, OPTCRYPTCONFIRMHOOK, 1 },
++  /*
++  ** .pp
++  ** If set, then you will be prompted for confirmation of keys when using
++  ** the \fIcrypt-hook\fP command.  If unset, no such confirmation prompt will
++  ** be presented.  This is generally considered unsafe, especially where
++  ** typos are concerned.
+   */
+ #ifdef HAVE_PGP
+   { "pgp_ignore_subkeys", DT_BOOL, R_NONE, OPTPGPIGNORESUB, 1},
+--- mutt.h	20 Apr 2002 08:11:13 -0000	3.8
++++ mutt.h	31 Aug 2002 22:01:58 -0000
+@@ -422,6 +422,7 @@ enum
+   /* PGP options */
+   
+ #if defined(HAVE_PGP) || defined(HAVE_SMIME)
++  OPTCRYPTAUTOSELECT,
+   OPTCRYPTAUTOSIGN,
+   OPTCRYPTAUTOENCRYPT,
+   OPTCRYPTREPLYENCRYPT,
+@@ -433,6 +434,7 @@ enum
+   OPTASKCERTLABEL,
+   OPTSDEFAULTDECRYPTKEY,
+ #endif
++  OPTCRYPTCONFIRMHOOK,
+ #ifdef HAVE_PGP
+   OPTPGPIGNORESUB,
+   OPTPGPLONGIDS,
+--- pgp.c	4 Apr 2002 06:50:12 -0000	3.13
++++ pgp.c	31 Aug 2002 22:01:58 -0000
+@@ -1037,6 +1037,8 @@ char *pgp_findKeys (ADDRESS *to, ADDRESS
+   char *keyID, *keylist = NULL, *t;
+   size_t keylist_size = 0;
+   size_t keylist_used = 0;
++  LIST *hook_list = NULL;
++  LIST *hook = NULL;
+   ADDRESS *tmp = NULL, *addr = NULL;
+   ADDRESS **last = &tmp;
+   ADDRESS *p, *q;
+@@ -1070,62 +1072,88 @@ char *pgp_findKeys (ADDRESS *to, ADDRESS
+     char buf[LONG_STRING];
+ 
+     q = p;
+-    k_info = NULL;
+ 
+-    if ((keyID = mutt_crypt_hook (p)) != NULL)
++    /*
++     * grab the list of matching hooks (matching on recipient address)
++     * process each entry singly so that auto key selection still works
++     */
++    hook_list = mutt_crypt_hook (p);
++    hook = hook_list;
++    while (1)
+     {
+       int r;
+-      snprintf (buf, sizeof (buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
+-      if ((r = mutt_yesorno (buf, M_YES)) == M_YES)
++
++      k_info = NULL;
++
++      if (hook)
+       {
+-	/* check for e-mail address */
+-	if ((t = strchr (keyID, '@')) && 
+-	    (addr = rfc822_parse_adrlist (NULL, keyID)))
++	keyID = (char *)hook->data;
++	snprintf (buf, sizeof (buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
++	if (!option(OPTCRYPTCONFIRMHOOK) || (r = mutt_yesorno (buf, M_YES)) == M_YES)
+ 	{
+-	  if (fqdn) rfc822_qualify (addr, fqdn);
+-	  q = addr;
++	  /* check for e-mail address */
++	  if ((t = strchr (keyID, '@')) && 
++	      (addr = rfc822_parse_adrlist (NULL, keyID)))
++	  {
++	    if (fqdn) rfc822_qualify (addr, fqdn);
++	    q = addr;
++	  }
++	  else
++	    k_info = pgp_getkeybystr (keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);
++	}
++	else if (r == -1)
++	{
++	  /*
++	   * yes, this implies that if one key fails they all do
++	   */
++	  safe_free ((void **) &keylist);
++	  rfc822_free_address (&tmp);
++	  rfc822_free_address (&addr);
++	  mutt_free_list (&hook_list);
++	  return NULL;
+ 	}
+-	else
+-	  k_info = pgp_getkeybystr (keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);
+       }
+-      else if (r == -1)
++
++      if (k_info == NULL)
++	pgp_invoke_getkeys (q);
++
++      if (k_info == NULL && (k_info = pgp_getkeybyaddr (q, KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
+       {
+-	safe_free ((void **) &keylist);
+-	rfc822_free_address (&tmp);
+-	rfc822_free_address (&addr);
+-	return NULL;
++	snprintf (buf, sizeof (buf), _("Enter keyID for %s: "), q->mailbox);
++
++	if ((key = pgp_ask_for_key (buf, q->mailbox,
++				    KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
++	{
++	  safe_free ((void **)&keylist);
++	  rfc822_free_address (&tmp);
++	  rfc822_free_address (&addr);
++	  mutt_free_list (&hook_list);
++	  return NULL;
++	}
+       }
+-    }
++      else
++	key = k_info;
+ 
+-    if (k_info == NULL)
+-      pgp_invoke_getkeys (q);
++      keyID = pgp_keyid (key);
++      
++      keylist_size += mutt_strlen (keyID) + 4;
++      safe_realloc ((void **)&keylist, keylist_size);
++      sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "",	/* __SPRINTF_CHECKED__ */
++	       keyID);
++      keylist_used = mutt_strlen (keylist);
+ 
+-    if (k_info == NULL && (k_info = pgp_getkeybyaddr (q, KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
+-    {
+-      snprintf (buf, sizeof (buf), _("Enter keyID for %s: "), q->mailbox);
++      pgp_free_key (&key);
++      rfc822_free_address (&addr);
+ 
+-      if ((key = pgp_ask_for_key (buf, q->mailbox,
+-				  KEYFLAG_CANENCRYPT, PGP_PUBRING)) == NULL)
+-      {
+-	safe_free ((void **)&keylist);
+-	rfc822_free_address (&tmp);
+-	rfc822_free_address (&addr);
+-	return NULL;
+-      }
+-    }
+-    else
+-      key = k_info;
++      if (!hook_list)
++	break;
+ 
+-    keyID = pgp_keyid (key);
+-    
+-    keylist_size += mutt_strlen (keyID) + 4;
+-    safe_realloc ((void **)&keylist, keylist_size);
+-    sprintf (keylist + keylist_used, "%s0x%s", keylist_used ? " " : "",	/* __SPRINTF_CHECKED__ */
+-	     keyID);
+-    keylist_used = mutt_strlen (keylist);
++      hook = hook->next;
++      if (!hook)
++	break;
+ 
+-    pgp_free_key (&key);
+-    rfc822_free_address (&addr);
++    }
++    mutt_free_list (&hook_list);
+ 
+   }
+   rfc822_free_address (&tmp);
+--- pgpkey.c	24 Jan 2002 12:10:51 -0000	3.0
++++ pgpkey.c	31 Aug 2002 22:01:58 -0000
+@@ -435,6 +435,11 @@ static int pgp_id_matches_addr (ADDRESS 
+   return rv;
+ }
+ 
++
++#define pgp_trusted_id(uid) (!option(OPTPGPCHECKTRUST) \
++			     || (pgp_id_is_valid((uid)) \
++				 && pgp_id_is_strong((uid))))
++
+ static pgp_key_t *pgp_select_key (pgp_key_t *keys,
+ 				  ADDRESS * p, const char *s)
+ {
+@@ -450,6 +455,7 @@ static pgp_key_t *pgp_select_key (pgp_ke
+   pgp_uid_t *a;
+   int (*f) (const void *, const void *);
+ 
++  int keymatch = 0;		/* count matching keys */
+   int unusable = 0;
+ 
+   keymax = 0;
+@@ -479,6 +485,7 @@ static pgp_key_t *pgp_select_key (pgp_ke
+       
+       KeyTable[i++] = a;
+     }
++    keymatch++;
+   }
+ 
+   if (!i && unusable)
+@@ -487,6 +494,21 @@ static pgp_key_t *pgp_select_key (pgp_ke
+     mutt_sleep (1);
+     return NULL;
+   }
++  else if (keymatch == 1 && option(OPTCRYPTAUTOSELECT))
++  {
++    /*
++     * Only one matching key...see if there's an id with enough trust to auto-select
++     */
++    kp = KeyTable[0]->parent;
++    for (a = kp->address; a; a = a->next)
++    {
++      if (pgp_trusted_id(a))
++      {
++	safe_free ((void **) &KeyTable);
++	return (kp);
++      }
++    }
++  }
+ 
+   switch (PgpSortKeys & SORT_MASK)
+   {
+@@ -597,9 +619,7 @@ static pgp_key_t *pgp_select_key (pgp_ke
+ 	  break;
+ 	}
+       
+-      if (option (OPTPGPCHECKTRUST) &&
+-	  (!pgp_id_is_valid (KeyTable[menu->current])
+-	   || !pgp_id_is_strong (KeyTable[menu->current])))
++      if (!pgp_trusted_id(KeyTable[menu->current]))
+       {
+ 	char *s = "";
+ 	char buff[LONG_STRING];
+--- protos.h	29 Apr 2002 17:12:00 -0000	3.7
++++ protos.h	31 Aug 2002 22:01:59 -0000
+@@ -130,7 +130,7 @@ char *mutt_get_body_charset (char *, siz
+ char *mutt_get_name (ADDRESS *);
+ char *mutt_get_parameter (const char *, PARAMETER *);
+ #if defined(HAVE_PGP) || defined(HAVE_SMIME)
+-char *mutt_crypt_hook (ADDRESS *);
++LIST *mutt_crypt_hook (ADDRESS *);
+ #endif /* HAVE_PGP */
+ char *mutt_make_date (char *, size_t);
+ 
+--- doc/manual.sgml.head	25 Apr 2002 13:28:23 -0000	3.3
++++ doc/manual.sgml.head	31 Aug 2002 22:02:00 -0000
+@@ -1388,7 +1388,9 @@ recipient's public key can't be deduced 
+ or because, for some reasons, you need to override the key Mutt would
+ normally use.  The pgp-hook command provides a method by which you can
+ specify the ID of the public key to be used when encrypting messages to
+-a certain recipient.
++a certain recipient.  You may use multiple pgp-hook's with the same
++pattern; multiple matching pgp-hook's result in the use of multiple
++keyids for recipient.
+ 
+ <sect1>Adding key sequences to the keyboard buffer<label id="push">
+ <p>
+--- doc/muttrc.man.head.orig2	Mon Sep  2 17:36:11 2002
++++ doc/muttrc.man.head	Mon Sep  2 17:37:22 2002
+@@ -272,5 +272,7 @@
+ The pgp-hook command provides a method by which you can
+ specify the ID of the public key to be used when encrypting messages
+-to a certain recipient.
++to a certain recipient.  You may use multiple \fBpgp-hook\fPs with the
++same \fIpattern\fP; multiple matching \fBpgp-hook\fPs result in the use
++of multiple \fIkey-id\fPs for recipient.
+ .PP
+ .nf
diff -ru  /usr/ports/mail/mutt-devel/scripts/generate-plist ./scripts/generate-plist
--- /usr/ports/mail/mutt-devel/scripts/generate-plist	Fri Aug 30 14:32:59 2002
+++ ./scripts/generate-plist	Mon Sep  2 17:03:33 2002
@@ -140,6 +140,9 @@
   if [ "$MUTT_IFDEF_PATCH" = "yes" ]; then
     html=$(($html + 1))
   fi
+  if [ "$MUTT_PGP_PATCH" = "yes" ]; then
+    html=$(($html + 2))
+  fi
   echo "share/doc/mutt/html/manual.html" >> $tmp_first
   echo "share/doc/mutt/html/manual_toc.html" >> $tmp_first 
   i=1
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209021610.g82GAdxB068358>