mail/mutt: Update to 2.0.0 with extra patch cleanup

- Update to 2.0.0 [1][2]
- Remove threadcomplete. Appears ~(~T) has the same functionality.
- Remove muttlib.c patch and use mutt's mktemp functions for temp files.
  I don't believe this is an issue since neomutt also use's mutt's.
- Remove forcebase64 patch.  Should no longer be an issue.
- Remove spelling options. Install the desired spelling port and
  configure mutt as needed.
- Update patch contexts.

[1] https://marc.info/?l=mutt-announce&m=160478560100820&w=2
[2] http://www.mutt.org/relnotes/2.0/

PR:		250970
Submitted by:	Derek Schrock <dereks@lifeofadishwasher.com> (maintainer)
This commit is contained in:
Li-Wen Hsu 2020-11-09 06:32:54 +00:00
parent 7576ea5198
commit 3d30797fee
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=554673
14 changed files with 73 additions and 160 deletions

View File

@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= mutt
DISTVERSION= 1.14.7
DISTVERSION= 2.0.0
CATEGORIES+= mail
MASTER_SITES= ftp://ftp.mutt.org/pub/mutt/ \
https://bitbucket.org/mutt/mutt/downloads/ \
@ -45,14 +45,12 @@ GNU_CONFIGURE= yes
OPTIONS_SUB= yes
OPTIONS_DEFINE= AUTOCRYPT DEBUG_LOGS DOCS EXAMPLES FLOCK FORCEBASE64 GPGME \
OPTIONS_DEFINE= AUTOCRYPT DEBUG_LOGS DOCS EXAMPLES FLOCK GPGME \
GREETING_PATCH HTML ICONV IDN IFDEF_PATCH LOCALES_FIX \
MAILBOX_MANPAGES MAILDIR_MTIME_PATCH NLS QUOTE_PATCH \
REVERSE_REPLY_PATCH SASL SMIME SMART_DATE SMTP URLVIEW
OPTIONS_SINGLE= GSSAPI HCACHE SCREEN
OPTIONS_RADIO= SPELL
OPTIONS_RADIO_SPELL= ASPELL ISPELL
OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
OPTIONS_SINGLE_HCACHE= HCACHE_BDB HCACHE_TOKYOCABINET HCACHE_KYOTOCABINET HCACHE_NONE
OPTIONS_SINGLE_SCREEN= NCURSES SLANG
@ -60,7 +58,6 @@ OPTIONS_SINGLE_SCREEN= NCURSES SLANG
AUTOCRYPT_DESC= Convenient End-to-End Encryption
DEBUG_LOGS_DESC= Debugging capabilities
FLOCK_DESC= flock() usage
FORCEBASE64_DESC= Option to force base64 encoding for compose
GPGME_DESC= Gpgme interface
GREETING_PATCH_DESC= Greeting support
HCACHE_BDB_DESC= Use Berkeley DB (BDB)
@ -103,10 +100,6 @@ AUTOCRYPT_DEPENDS= gnupg>=2.1:security/gnupg \
AUTOCRYPT_BUILD_DEPENDS= ${AUTOCRYPT_DEPENDS}
AUTOCRYPT_RUN_DEPENDS= ${AUTOCRYPT_DEPENDS}
ASPELL_BUILD_DEPENDS= aspell:textproc/aspell
ASPELL_RUN_DEPENDS= aspell:textproc/aspell
ISPELL_BUILD_DEPENDS= ispell:textproc/aspell-ispell
ISPELL_RUN_DEPENDS= ispell:textproc/aspell-ispell
URLVIEW_RUN_DEPENDS= urlview:textproc/urlview
DEBUG_LOGS_CONFIGURE_ON= --enable-debug
@ -176,8 +169,6 @@ GPGME_CONFIGURE_ENABLE= gpgme
SMTP_CONFIGURE_ENABLE= smtp
FORCEBASE64_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-forcebase64
MAILDIR_MTIME_PATCH_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-maildir-mtime
GREETING_PATCH_PATCHFILES= mutt-${GREETING_PATCH_VERSION}.vc.greeting:vc
@ -187,9 +178,8 @@ QUOTE_PATCH_PATCHFILES= patch-${VVV_PATCH_VERSION}.vvv.initials.xz:vvv \
.include <bsd.port.options.mk>
# un/comment as each VERSION is created for PORTVERSION
VVV_PATCH_VERSION= 1.13.0
GREETING_PATCH_VERSION= 1.14.3
GREETING_PATCH_VERSION= 2.0.0
post-install:
${INSTALL_MAN} ${FILESDIR}/mailcap.5 ${STAGEDIR}${MANPREFIX}/man/man5
@ -216,10 +206,4 @@ post-stage::
${STAGEDIR}/${LOCALBASE}/etc/Muttrc.sample
@${RM} ${STAGEDIR}/${LOCALBASE}/etc/mime.types*
# Change default ispell
post-build-ASPELL-on:
@${REINPLACE_CMD} -e '/^# append-hook/p' \
-e 's/^# append-hook.*$$/set ispell="aspell --mode=email check"/' \
${WRKSRC}/doc/Muttrc
.include <bsd.port.mk>

View File

@ -1,8 +1,8 @@
TIMESTAMP = 1598742511
SHA256 (mutt/mutt-1.14.7.tar.gz) = e4f507b133253cb5eef27996b8668956cdf9caac622cf8adad13f0f9a4eda864
SIZE (mutt/mutt-1.14.7.tar.gz) = 5009968
SHA256 (mutt/mutt-1.14.3.vc.greeting) = c6067f19e51e99e3c981c0c45a29fb442626d8bb3f0df56736ce4ee0eb0bfa83
SIZE (mutt/mutt-1.14.3.vc.greeting) = 4472
TIMESTAMP = 1604877444
SHA256 (mutt/mutt-2.0.0.tar.gz) = 93a4138ca795d2668e25c8e95c9ef2082447431423163decda83e66a4e42aeaf
SIZE (mutt/mutt-2.0.0.tar.gz) = 5287742
SHA256 (mutt/mutt-2.0.0.vc.greeting) = 28d157df0ca36f2448dcc3d1cd19e34ec0eefe88251ebf1951e080d7178cccd2
SIZE (mutt/mutt-2.0.0.vc.greeting) = 4452
SHA256 (mutt/patch-1.13.0.vvv.initials.xz) = 8b25ad6596bd57d94f6551e7e73ceb8da620468e96fb507b2f51545d5b3eaa02
SIZE (mutt/patch-1.13.0.vvv.initials.xz) = 720
SHA256 (mutt/patch-1.13.0.vvv.quote.xz) = 788d25d1439d86d6c5007d141d1c219496e77940b5ce37819471c941f78f03e4

View File

@ -1,37 +0,0 @@
--- init.h.orig 2019-12-08 02:41:29 UTC
+++ init.h
@@ -1079,6 +1079,11 @@ struct option_t MuttVars[] = {
** sent to both the list and your address, resulting in two copies
** of the same email for you.
*/
+ { "force_base64", DT_BOOL, R_NONE, {.l=OPTFORCEBASE64}, {.l=0} },
+ /*
+ ** .pp
+ ** If you need to encode all text parts to base64, set this option.
+ */
{ "force_name", DT_BOOL, R_NONE, {.l=OPTFORCENAME}, {.l=0} },
/*
** .pp
--- mutt.h.orig 2019-12-08 02:41:29 UTC
+++ mutt.h
@@ -423,6 +423,7 @@ enum
OPTFCCCLEAR,
OPTFLAGSAFE,
OPTFOLLOWUPTO,
+ OPTFORCEBASE64,
OPTFORCENAME,
OPTFORWDECODE,
OPTFORWQUOTE,
--- sendlib.c.orig 2019-12-08 02:41:29 UTC
+++ sendlib.c
@@ -1218,7 +1218,9 @@ static void mutt_set_encoding (BODY *b, CONTENT *info)
if (b->type == TYPETEXT)
{
char *chsname = mutt_get_body_charset (send_charset, sizeof (send_charset), b);
- if ((info->lobin && ascii_strncasecmp (chsname, "iso-2022", 8)) || info->linemax > 990 || (info->from && option (OPTENCODEFROM)))
+ if (option (OPTFORCEBASE64))
+ b->encoding = ENCBASE64;
+ else if ((info->lobin && ascii_strncasecmp (chsname, "iso-2022", 8)) || info->linemax > 990 || (info->from && option (OPTENCODEFROM)))
b->encoding = ENCQUOTEDPRINTABLE;
else if (info->hibin)
b->encoding = option (OPTALLOW8BIT) ? ENC8BIT : ENCQUOTEDPRINTABLE;

View File

@ -1,10 +1,10 @@
--- PATCHES.orig 2020-08-29 22:13:50 UTC
--- PATCHES.orig 2020-11-08 20:52:48 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.4.cd.ifdef.1
--- init.c.orig 2020-08-29 19:37:53 UTC
--- init.c.orig 2020-11-03 17:50:37 UTC
+++ init.c
@@ -648,6 +648,52 @@ static mbchar_table *parse_mbchar_table (const char *s
@@ -672,6 +672,52 @@ static mbchar_table *parse_mbchar_table (const char *s
return t;
}
@ -57,9 +57,9 @@
static int parse_unignore (BUFFER *buf, BUFFER *s, union pointer_long_t udata, BUFFER *err)
{
do
--- init.h.orig 2020-08-29 22:13:50 UTC
--- init.h.orig 2020-11-08 20:52:48 UTC
+++ init.h
@@ -4594,6 +4594,7 @@ static int parse_lists (BUFFER *, BUFFER *, union poin
@@ -4705,6 +4705,7 @@ static int parse_lists (BUFFER *, BUFFER *, union poin
static int parse_unlists (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
static int parse_alias (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
static int parse_unalias (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
@ -67,7 +67,7 @@
static int parse_echo (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
static int parse_ignore (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
static int parse_unignore (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *);
@@ -4658,6 +4659,7 @@ const struct command_t Commands[] = {
@@ -4772,6 +4773,7 @@ const struct command_t Commands[] = {
{ "hdr_order", parse_list, {.p=&HeaderOrderList} },
#ifdef HAVE_ICONV
{ "iconv-hook", mutt_parse_hook, {.l=MUTT_ICONVHOOK} },

View File

@ -1,8 +1,8 @@
--- PATCHES.orig 2020-05-05 02:09:32 UTC
--- PATCHES.orig 2020-11-08 20:52:49 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.7.ust.maildir-mtime.2
--- browser.c.orig 2020-05-02 21:08:56 UTC
--- browser.c.orig 2020-11-03 17:50:37 UTC
+++ browser.c
@@ -32,6 +32,7 @@
#ifdef USE_IMAP

View File

@ -1,10 +1,10 @@
--- PATCHES.orig 2020-05-05 02:09:33 UTC
--- PATCHES.orig 2020-11-08 20:52:49 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.6.cb.reverse_reply.2
--- init.h.orig 2020-05-05 02:09:32 UTC
--- init.h.orig 2020-11-08 20:52:48 UTC
+++ init.h
@@ -3111,6 +3111,13 @@ struct option_t MuttVars[] = {
@@ -3191,6 +3191,13 @@ struct option_t MuttVars[] = {
** In either case, a missing real name will be filled in afterwards
** using the value of $$realname.
*/
@ -18,9 +18,9 @@
{ "rfc2047_parameters", DT_BOOL, R_NONE, {.l=OPTRFC2047PARAMS}, {.l=0} },
/*
** .pp
--- mutt.h.orig 2020-05-05 02:09:32 UTC
--- mutt.h.orig 2020-11-08 20:52:48 UTC
+++ mutt.h
@@ -513,6 +513,7 @@ enum
@@ -522,6 +522,7 @@ enum
OPTREVALIAS,
OPTREVNAME,
OPTREVREAL,
@ -28,7 +28,7 @@
OPTRFC2047PARAMS,
OPTSAVEADDRESS,
OPTSAVEEMPTY,
--- protos.h.orig 2020-05-02 21:08:56 UTC
--- protos.h.orig 2020-11-06 22:06:35 UTC
+++ protos.h
@@ -85,6 +85,7 @@ char* mutt_extract_message_id (const char *, const cha
ADDRESS *mutt_get_address (ENVELOPE *, char **);
@ -38,9 +38,9 @@
ADDRESS *mutt_expand_aliases (ADDRESS *);
ADDRESS *mutt_parse_adrlist (ADDRESS *, const char *);
--- send.c.orig 2020-05-02 21:08:56 UTC
--- send.c.orig 2020-11-03 17:50:37 UTC
+++ send.c
@@ -725,6 +725,10 @@ void mutt_fix_reply_recipients (ENVELOPE *env)
@@ -739,6 +739,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);
@ -51,9 +51,9 @@
env->cc = mutt_remove_xrefs (env->to, env->cc);
if (env->cc && !env->to)
--- sendlib.c.orig 2020-05-02 21:08:56 UTC
--- sendlib.c.orig 2020-11-03 17:50:37 UTC
+++ sendlib.c
@@ -2981,6 +2981,35 @@ static void set_noconv_flags (BODY *b, short flag)
@@ -3007,6 +3007,35 @@ static void set_noconv_flags (BODY *b, short flag)
}
}

View File

@ -1,4 +1,4 @@
--- hdrline.c.orig 2020-05-05 02:09:32 UTC
--- hdrline.c.orig 2020-11-08 20:52:48 UTC
+++ hdrline.c
@@ -249,6 +249,89 @@ static char *apply_subject_mods (ENVELOPE *env)
* %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label)
@ -105,9 +105,9 @@
if (!do_locales)
setlocale (LC_TIME, "");
--- mutt.h.orig 2020-05-05 02:09:33 UTC
--- mutt.h.orig 2020-11-08 20:52:49 UTC
+++ mutt.h
@@ -165,6 +165,16 @@ typedef enum
@@ -169,6 +169,16 @@ typedef enum
MUTT_WRITE_HEADER_MIME
} mutt_write_header_mode;

View File

@ -1,4 +1,4 @@
--- commands.c.orig 2020-05-02 21:08:56 UTC
--- commands.c.orig 2020-11-06 20:53:46 UTC
+++ commands.c
@@ -302,7 +302,7 @@ int mutt_display_message (HEADER *cur)
{
@ -9,9 +9,9 @@
mutt_message ( _("S/MIME signature successfully verified."));
else
mutt_error ( _("S/MIME certificate owner does not match sender."));
--- init.h.orig 2020-05-05 02:09:33 UTC
--- init.h.orig 2020-11-08 20:52:49 UTC
+++ init.h
@@ -3608,6 +3608,15 @@ struct option_t MuttVars[] = {
@@ -3688,6 +3688,15 @@ struct option_t MuttVars[] = {
** to determine the key to use. It will ask you to supply a key, if it can't find one.
** (S/MIME only)
*/
@ -27,9 +27,9 @@
{ "smime_self_encrypt_as", DT_SYN, R_NONE, {.p="smime_default_key"}, {.p=0} },
{ "smime_default_key", DT_STR, R_NONE, {.p=&SmimeDefaultKey}, {.p=0} },
/*
--- mutt.h.orig 2020-05-05 02:09:33 UTC
--- mutt.h.orig 2020-11-08 20:52:49 UTC
+++ mutt.h
@@ -596,6 +596,7 @@ enum
@@ -606,6 +606,7 @@ enum
OPTSMIMEISDEFAULT,
OPTSMIMESELFENCRYPT,
OPTASKCERTLABEL,

View File

@ -1,4 +1,4 @@
--- browser.c.orig 2020-05-05 02:09:32 UTC
--- browser.c.orig 2020-11-08 20:52:49 UTC
+++ browser.c
@@ -87,6 +87,12 @@ static int browser_compare_subject (const void *a, con
struct folder_file *pa = (struct folder_file *) a;
@ -26,7 +26,33 @@
int r = pa->mtime - pb->mtime;
return ((BrowserSort & SORT_REVERSE) ? -r : r);
@@ -106,6 +118,12 @@ static int browser_compare_size (const void *a, const
@@ -107,6 +119,12 @@ static int browser_compare_size (const void *a, const
struct folder_file *pa = (struct folder_file *) a;
struct folder_file *pb = (struct folder_file *) b;
+ /* Always keep '..' in first menu position */
+ if (!strncmp(pa->display_name, "..", 2))
+ return(-1);
+ if (!strncmp(pb->display_name, "..", 2))
+ return(1);
+
int r = pa->size - pb->size;
return ((BrowserSort & SORT_REVERSE) ? -r : r);
@@ -117,6 +135,12 @@ static int browser_compare_count (const void *a, const
struct folder_file *pa = (struct folder_file *) a;
struct folder_file *pb = (struct folder_file *) b;
+ /* Always keep '..' in first menu position */
+ if (!strncmp(pa->display_name, "..", 2))
+ return(-1);
+ if (!strncmp(pb->display_name, "..", 2))
+ return(1);
+
int r = pa->msg_count - pb->msg_count;
return ((BrowserSort & SORT_REVERSE) ? -r : r);
@@ -126,6 +150,12 @@ static int browser_compare_unread (const void *a, cons
{
struct folder_file *pa = (struct folder_file *) a;
struct folder_file *pb = (struct folder_file *) b;
@ -37,5 +63,5 @@
+ if (!strncmp(pb->display_name, "..", 2))
+ return(1);
int r = pa->size - pb->size;
int r = pa->msg_unread - pb->msg_unread;

View File

@ -1,8 +1,8 @@
--- PATCHES.orig 2020-05-05 02:09:34 UTC
--- PATCHES.orig 2020-11-08 20:52:50 UTC
+++ PATCHES
@@ -0,0 +1 @@
+patch-1.5.0.ats.date_conditional.1
--- hdrline.c.orig 2020-05-05 02:09:33 UTC
--- hdrline.c.orig 2020-11-08 20:52:49 UTC
+++ hdrline.c
@@ -428,6 +428,53 @@ hdr_format_str (char *dest,
const char *cp;
@ -58,9 +58,9 @@
p = dest;
--- muttlib.c.orig 2020-05-02 21:08:56 UTC
--- muttlib.c.orig 2020-11-06 22:10:26 UTC
+++ muttlib.c
@@ -1667,7 +1667,16 @@ void mutt_FormatString (char *dest, /* output buffer
@@ -1764,7 +1764,16 @@ void mutt_FormatString (char *dest, /* output buffer
if (*src == '?')
{
flags |= MUTT_FORMAT_OPTIONAL;
@ -78,7 +78,7 @@
}
else
{
@@ -1683,12 +1692,12 @@ void mutt_FormatString (char *dest, /* output buffer
@@ -1780,12 +1789,12 @@ void mutt_FormatString (char *dest, /* output buffer
count++;
}
*cp = 0;

View File

@ -1,6 +1,6 @@
--- muttlib.c.orig 2020-05-05 02:09:34 UTC
--- muttlib.c.orig 2020-11-08 20:52:50 UTC
+++ muttlib.c
@@ -1710,6 +1710,12 @@ void mutt_FormatString (char *dest, /* output buffer
@@ -1807,6 +1807,12 @@ void mutt_FormatString (char *dest, /* output buffer
count = 0;
while (count < sizeof (ifstring) && *src && *src != '?' && *src != '&')
{
@ -13,7 +13,7 @@
*cp++ = *src++;
count++;
}
@@ -1722,7 +1728,13 @@ void mutt_FormatString (char *dest, /* output buffer
@@ -1819,7 +1825,13 @@ void mutt_FormatString (char *dest, /* output buffer
count = 0;
while (count < sizeof (elsestring) && *src && *src != '?')
{

View File

@ -1,25 +0,0 @@
--- muttlib.c.orig 2020-05-05 02:09:34 UTC
+++ muttlib.c
@@ -930,16 +930,15 @@ void _mutt_buffer_mktemp (BUFFER *buf, const char *pre
void _mutt_mktemp (char *s, size_t slen, const char *prefix, const char *suffix,
const char *src, int line)
{
- size_t n = snprintf (s, slen, "%s/%s-%s-%d-%d-%ld%ld%s%s",
- NONULL (Tempdir), NONULL (prefix), NONULL (Hostname),
- (int) getuid (), (int) getpid (), random (), random (),
- suffix ? "." : "", NONULL (suffix));
+ size_t n = snprintf (s, slen, "%s/mutt-%s-XXXXXXXX", NONULL (Tempdir), NONULL (Hostname));
if (n >= slen)
dprint (1, (debugfile, "%s:%d: ERROR: insufficient buffer space to hold temporary filename! slen=%zu but need %zu\n",
src, line, slen, n));
- dprint (3, (debugfile, "%s:%d: mutt_mktemp returns \"%s\".\n", src, line, s));
- if (unlink (s) && errno != ENOENT)
- dprint (1, (debugfile, "%s:%d: ERROR: unlink(\"%s\"): %s (errno %d)\n", src, line, s, strerror (errno), errno));
+ if (mktemp (s)) {
+ dprint (3, (debugfile, "%s:%d: mutt_mktemp returns \"%s\".\n", src, line, s));
+ } else {
+ dprint (1, (debugfile, "%s:%d: ERROR: mktemp(\"%s\"): %s (errno %d)\n", src, line, s, strerror (errno), errno));
+ }
}
/* these characters must be escaped in regular expressions */

View File

@ -1,37 +0,0 @@
--- mutt.h.orig 2020-05-25 22:13:51 UTC
+++ mutt.h
@@ -242,6 +242,7 @@ enum
MUTT_EXPIRED,
MUTT_SUPERSEDED,
MUTT_TRASH,
+ MUTT_THREADCOMPLETE,
/* actions for mutt_pattern_comp/mutt_pattern_exec */
MUTT_AND,
--- pattern.c.orig 2020-05-25 20:41:30 UTC
+++ pattern.c
@@ -57,6 +57,7 @@ static const struct pattern_flags
}
Flags[] =
{
+ { 'a', MUTT_THREADCOMPLETE, 0, NULL },
{ 'A', MUTT_ALL, 0, NULL },
{ 'b', MUTT_BODY, MUTT_FULL_MSG|MUTT_SEND_MODE_SEARCH, eat_regexp },
{ 'B', MUTT_WHOLE_MSG, MUTT_FULL_MSG|MUTT_SEND_MODE_SEARCH, eat_regexp },
@@ -1499,6 +1500,16 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec
else
result = mutt_is_list_cc (pat->alladdr, h->env->to, h->env->cc);
return (pat->not ^ result);
+ case MUTT_THREADCOMPLETE:
+ { static pattern_t tmp;
+ static short pattern_set = 0;
+ if(! pattern_set) {
+ memset (&tmp, 0, sizeof (tmp));
+ tmp.op = MUTT_TAG;
+ pattern_set = 1;
+ }
+ return (pat->not ^ (h->env && match_threadcomplete(&tmp, flags, ctx, h->thread, 1, 1, 1, 1)));
+ }
case MUTT_SUBSCRIBED_LIST:
if (cache)
{

View File

@ -70,6 +70,8 @@ man/man5/muttrc.5.gz
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/iconv/iconv.solaris-2.6.rc
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/iconv/iconv.solaris-2.7.rc
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/markdown2html
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mutt_oauth2.py
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mutt_oauth2.py.README
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mutt_xtitle
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pgp2.rc
%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pgp5.rc