aboutsummaryrefslogtreecommitdiff
path: root/mail/mutt-devel
diff options
context:
space:
mode:
authorOliver Braun <obraun@FreeBSD.org>2002-09-02 19:26:05 +0000
committerOliver Braun <obraun@FreeBSD.org>2002-09-02 19:26:05 +0000
commit26b1d4189756f966fbec501149eed383d0a6f8cc (patch)
tree7ff39ed8d3865b51213bc88bf4096f8d98e5e237 /mail/mutt-devel
parentd0f277d2fd5530efd6c8e76cfffc96c457eaa996 (diff)
downloadports-26b1d4189756f966fbec501149eed383d0a6f8cc.tar.gz
ports-26b1d4189756f966fbec501149eed383d0a6f8cc.zip
Notes
Diffstat (limited to 'mail/mutt-devel')
-rw-r--r--mail/mutt-devel/Makefile36
-rw-r--r--mail/mutt-devel/distinfo1
-rw-r--r--mail/mutt-devel/files/extra-patch-pgp-dw342
-rw-r--r--mail/mutt-devel/scripts/generate-plist3
4 files changed, 376 insertions, 6 deletions
diff --git a/mail/mutt-devel/Makefile b/mail/mutt-devel/Makefile
index 52a7a4bfd9e3..df73ae5f4c77 100644
--- a/mail/mutt-devel/Makefile
+++ b/mail/mutt-devel/Makefile
@@ -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 @@ PATCH_SITES+= http://www.mutt.org.ua/download/mutt-${PATCH_VERSION}/ \
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 @@ USE_OPENSSL= yes
.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 @@ PATCH_DIST_STRIP= -p1
.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 @@ SCRIPTS_ENV+= MUTT_SIGNATURE_MENU="yes"
.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 @@ post-build:
${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 --git a/mail/mutt-devel/distinfo b/mail/mutt-devel/distinfo
index bd1564a44acb..ff756c7292ad 100644
--- a/mail/mutt-devel/distinfo
+++ b/mail/mutt-devel/distinfo
@@ -6,3 +6,4 @@ MD5 (mutt/patch-1.5.1.vvv.quote.gz) = 83aa6b5a9c1117d7f15df0c59037c318
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 --git a/mail/mutt-devel/files/extra-patch-pgp-dw b/mail/mutt-devel/files/extra-patch-pgp-dw
new file mode 100644
index 000000000000..a48c16b65b86
--- /dev/null
+++ b/mail/mutt-devel/files/extra-patch-pgp-dw
@@ -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 --git a/mail/mutt-devel/scripts/generate-plist b/mail/mutt-devel/scripts/generate-plist
index 521ba4dabfc9..d7a43de036a2 100644
--- a/mail/mutt-devel/scripts/generate-plist
+++ b/mail/mutt-devel/scripts/generate-plist
@@ -140,6 +140,9 @@ if [ "$MUTT_HTML" = "yes" ]; then
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