Index: head/mail/mutt/Makefile =================================================================== --- head/mail/mutt/Makefile (revision 562417) +++ head/mail/mutt/Makefile (revision 562418) @@ -1,222 +1,222 @@ # Created by: Udo Schweigert # $FreeBSD$ PORTNAME= mutt -DISTVERSION= 2.0.4 +DISTVERSION= 2.0.5 CATEGORIES+= mail MASTER_SITES= ftp://ftp.mutt.org/pub/mutt/ \ https://bitbucket.org/mutt/mutt/downloads/ \ http://www.mutt.org.ua/download/mutt-${VVV_PATCH_VERSION}/:vvv \ http://www2.mutt.org.ua/download/mutt-${VVV_PATCH_VERSION}/:vvv DIST_SUBDIR= mutt EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} PATCH_SITES+= http://www.mutt.org.ua/download/mutt-${VVV_PATCH_VERSION}/:vvv \ http://www2.mutt.org.ua/download/mutt-${VVV_PATCH_VERSION}/:vvv \ http://vc.org.ua/mutt/:vc PATCH_DIST_STRIP= -p1 MAINTAINER= dereks@lifeofadishwasher.com COMMENT= Small but powerful text based program for read/writing e-mail LICENSE= GPLv2+ RUN_DEPENDS= ${LOCALBASE}/etc/mime.types:misc/mime-support USES= cpe perl5 shebangfix ssl USE_PERL5= build SHEBANG_FILES= contrib/smime_keys_test.pl doc/gen-map-doc smime_keys.pl GNU_CONFIGURE= yes CONFIGURE_ARGS= --disable-fcntl \ --enable-compressed \ --enable-external-dotlock \ --enable-imap \ --enable-pop \ --enable-sidebar \ --sysconfdir=${PREFIX}/etc \ --with-docdir=${DOCSDIR} \ --with-ssl=${OPENSSLBASE} .if defined(MUTT_CONFIGURE_ARGS) CONFIGURE_ARGS+= ${MUTT_CONFIGURE_ARGS} .endif CONFLICTS= ja-mutt-[0-9]* ja-mutt-devel-[0-9]* mutt-1.4* \ mutt-devel-lite-[0-9]* mutt-lite-[0-9]* zh-mutt-devel-[0-9]* INFO= ${PORTNAME} OPTIONS_SUB= yes 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 \ SMART_DATE SMIME SMTP URLVIEW OPTIONS_SINGLE= GSSAPI HCACHE SCREEN OPTIONS_SINGLE_GSSAPI= GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE OPTIONS_SINGLE_HCACHE= HCACHE_BDB HCACHE_KYOTOCABINET HCACHE_NONE \ HCACHE_TOKYOCABINET OPTIONS_SINGLE_SCREEN= NCURSES SLANG AUTOCRYPT_DESC= Convenient End-to-End Encryption DEBUG_LOGS_DESC= Debugging capabilities FLOCK_DESC= flock() usage GPGME_DESC= Gpgme interface GREETING_PATCH_DESC= Greeting support HCACHE_BDB_DESC= Use Berkeley DB (BDB) HCACHE_DESC= Header Cache support HCACHE_KYOTOCABINET_DESC= Use Kyoto Cabinet HCACHE_NONE_DESC= Disable Header Cache HCACHE_TOKYOCABINET_DESC= Use Tokyo Cabinet HTML_DESC= HTML documentation IDN_DESC= International Domain Names (implies ICONV) IFDEF_PATCH_DESC= ifdef feature LOCALES_FIX_DESC= Locales fix MAILBOX_MANPAGES_DESC= Install mbox.5/mmdf.5 manpages MAILDIR_MTIME_PATCH_DESC= Maildir mtime patch NCURSES_DESC= Ncurses support NLS_DESC= Native language support (implies ICONV) QUOTE_PATCH_DESC= Extended quoting REVERSE_REPLY_PATCH_DESC= Reverse_reply SASL_DESC= SASL authentication SMIME_DESC= SMIME email check option patch SLANG_DESC= SLANG support SMART_DATE_DESC= Dynamic date formatting with "%@" SMTP_DESC= SMTP relay support URLVIEW_DESC= Use urlview for the URL selector menu OPTIONS_DEFAULT= AUTOCRYPT DEBUG_LOGS GPGME GSSAPI_NONE HCACHE_BDB HTML \ ICONV IDN IFDEF_PATCH LOCALES_FIX MAILBOX_MANPAGES \ MAILDIR_MTIME_PATCH NCURSES NLS QUOTE_PATCH \ REVERSE_REPLY_PATCH SASL SMART_DATE SMIME SMTP URLVIEW .ifmake makesum # for optional distfiles patchfiles OPTIONS_OVERRIDE= ${OPTIONS_DEFAULT} ${OPTIONS_DEFINE} .MAKEOVERRIDES+= OPTIONS_OVERRIDE .endif AUTOCRYPT_CONFIGURE_ENABLE= autocrypt AUTOCRYPT_IMPLIES= GPGME IDN AUTOCRYPT_USES= sqlite:3 AUTOCRYPT_CONFIGURE_WITH= sqlite3=${LOCALBASE} AUTOCRYPT_DEPENDS= gnupg>=2.1:security/gnupg \ gpgme>=1.8:security/gpgme AUTOCRYPT_BUILD_DEPENDS= ${AUTOCRYPT_DEPENDS} AUTOCRYPT_RUN_DEPENDS= ${AUTOCRYPT_DEPENDS} URLVIEW_RUN_DEPENDS= urlview:textproc/urlview DEBUG_LOGS_CONFIGURE_ON= --enable-debug DOCS_CONFIGURE_OFF= --disable-doc DOCS_BUILD_DEPENDS= lynx:www/lynx # Handle ncurses/ncurses-port/slang SLANG_CONFIGURE_ON= --with-slang=${LOCALBASE} SLANG_LIB_DEPENDS= libslang.so:devel/libslang2 SLANG_VARS= PKGMESSAGE=${FILESDIR}/pkg-message.slang NCURSES_USES= ncurses NLS_USES= gettext NLS_CONFIGURE_ENABLE= nls NLS_IMPLIES= ICONV # Handle GSSAPI from various places GSSAPI_BASE_USES= gssapi GSSAPI_BASE_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \ --with-gss=${GSSAPIBASEDIR} GSSAPI_HEIMDAL_USES= gssapi:heimdal GSSAPI_HEIMDAL_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \ --with-gss=${GSSAPIBASEDIR} GSSAPI_MIT_USES= gssapi:mit GSSAPI_MIT_CONFIGURE_ON= ${GSSAPI_CONFIGURE_ARGS} \ --with-gss=${GSSAPIBASEDIR} GSSAPI_NONE_CONFIGURE_ON= --without-gss HCACHE_NONE_CONFIGURE_ON= --disable-hcache HCACHE_NONE_CONFIGURE_OFF= --enable-hcache \ --without-gdbm \ --without-qdbm HCACHE_BDB_CONFIGURE_WITH= bdb=${LOCALBASE} HCACHE_BDB_USES= bdb:42+ HCACHE_TOKYOCABINET_CONFIGURE_WITH= tokyocabinet=${LOCALBASE} HCACHE_TOKYOCABINET_LIB_DEPENDS= libtokyocabinet.so:databases/tokyocabinet HCACHE_KYOTOCABINET_CONFIGURE_WITH= kyotocabinet=${LOCALBASE} HCACHE_KYOTOCABINET_LIB_DEPENDS= libkyotocabinet.so:databases/kyotocabinet ICONV_USES= iconv:translit ICONV_CONFIGURE_ON= ${ICONV_CONFIGURE_ARG} ICONV_CONFIGURE_OFF= --disable-iconv REVERSE_REPLY_PATCH_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-reverse_reply SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 SASL_CONFIGURE_ON= --with-sasl=${LOCALBASE} SMIME_EXTRA_PATCHES= ${PATCHDIR}/extra-smime-sender SMART_DATE_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-smartdate FLOCK_CONFIGURE_ENABLE= flock LOCALES_FIX_CONFIGURE_ON= --enable-locales-fix IDN_LIB_DEPENDS= libidn2.so:dns/libidn2 \ libunistring.so:devel/libunistring IDN_CONFIGURE_WITH= idn2=${LOCALBASE} IDN_IMPLIES= ICONV IFDEF_PATCH_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-ifdef GPGME_LIB_DEPENDS+= libassuan.so:security/libassuan \ libgpg-error.so:security/libgpg-error \ libgpgme.so:security/gpgme GPGME_CONFIGURE_ENABLE= gpgme SMTP_CONFIGURE_ENABLE= smtp MAILDIR_MTIME_PATCH_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-maildir-mtime GREETING_PATCH_PATCHFILES= mutt-${GREETING_PATCH_VERSION}.vc.greeting:vc QUOTE_PATCH_PATCHFILES= patch-${VVV_PATCH_VERSION}.vvv.initials.xz:vvv \ patch-${VVV_PATCH_VERSION}.vvv.quote.xz:vvv .include VVV_PATCH_VERSION= 1.13.0 -GREETING_PATCH_VERSION= 2.0.1 +GREETING_PATCH_VERSION= 2.0.5 post-install: ${INSTALL_MAN} ${FILESDIR}/mailcap.5 ${STAGEDIR}${MANPREFIX}/man/man5 pre-configure:: # Stop make from setgid mutt_dotlock @${REINPLACE_CMD} \ -e '/if test.*mutt_dotlock.*DOTLOCK_GROUP/s/if/if ${FALSE} \&\&/' \ ${WRKSRC}/Makefile.in # Base FreeBSD krb5-config --version returns "FreeBSD heimdal" @${REINPLACE_CMD} -e 's,?eimdal\*),?eimdal*|\"FreeBSD heimdal\"*),' \ ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} # Install contrib samples to ${EXAMPLESDIR} @${REINPLACE_CMD} -e 's#$$(docdir)/samples#${EXAMPLESDIR}#g' \ ${WRKSRC}/contrib/Makefile.in pre-configure-HCACHE_BDB-on: @${REINPLACE_CMD} -E -e 's/BDB_VERSIONS="/&${BDB_LIB_NAME} db${BDB_VER} /' \ ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT} # Undo some dist. installed files post-stage:: @${MV} ${STAGEDIR}/${LOCALBASE}/etc/Muttrc.dist \ ${STAGEDIR}/${LOCALBASE}/etc/Muttrc.sample @${RM} ${STAGEDIR}/${LOCALBASE}/etc/mime.types* .include Index: head/mail/mutt/distinfo =================================================================== --- head/mail/mutt/distinfo (revision 562417) +++ head/mail/mutt/distinfo (revision 562418) @@ -1,9 +1,9 @@ -TIMESTAMP = 1609370754 -SHA256 (mutt/mutt-2.0.4.tar.gz) = 45087e78105e9abc7cc37827865d319081587cb53a94412aa4e3118e937991d4 -SIZE (mutt/mutt-2.0.4.tar.gz) = 5293913 -SHA256 (mutt/mutt-2.0.1.vc.greeting) = 28d157df0ca36f2448dcc3d1cd19e34ec0eefe88251ebf1951e080d7178cccd2 -SIZE (mutt/mutt-2.0.1.vc.greeting) = 4452 +TIMESTAMP = 1611365285 +SHA256 (mutt/mutt-2.0.5.tar.gz) = e21d5aec0d3110f89d390929e56a38794a94f5843120d9ff59b21da78fd0004d +SIZE (mutt/mutt-2.0.5.tar.gz) = 5294710 +SHA256 (mutt/mutt-2.0.5.vc.greeting) = cd91af2f8b30019939243cd736309664b0f00f090f0cd1b2dab6747fb07007e3 +SIZE (mutt/mutt-2.0.5.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 SIZE (mutt/patch-1.13.0.vvv.quote.xz) = 1340 Index: head/mail/mutt/files/extra-patch-ifdef =================================================================== --- head/mail/mutt/files/extra-patch-ifdef (revision 562417) +++ head/mail/mutt/files/extra-patch-ifdef (revision 562418) @@ -1,77 +1,77 @@ ---- PATCHES.orig 2020-11-08 20:52:48 UTC +--- PATCHES.orig 2021-01-23 01:39:53 UTC +++ PATCHES @@ -0,0 +1 @@ +patch-1.5.4.cd.ifdef.1 ---- init.c.orig 2020-11-03 17:50:37 UTC +--- init.c.orig 2021-01-21 20:23:24 UTC +++ init.c -@@ -672,6 +672,52 @@ static mbchar_table *parse_mbchar_table (const char *s +@@ -678,6 +678,52 @@ static mbchar_table *parse_mbchar_table (const char *s return t; } +static int parse_ifdef (BUFFER *tmp, BUFFER *s, union pointer_long_t data, BUFFER *err) +{ + int i, j, res = 0; + BUFFER token; + + memset (&token, 0, sizeof (token)); + mutt_extract_token (tmp, s, 0); + + /* is the item defined as a variable or a function? */ + if (!(res = (mutt_option_index (tmp->data) != -1))) + for (i = 0; !res && i < MENU_MAX; i++) + { + const struct binding_t *b = km_get_table (Menus[i].value); + + if (!b) + continue; + + for (j = 0; b[j].name; j++) + if (!ascii_strncasecmp (tmp->data, b[j].name, mutt_strlen (tmp->data)) + && (mutt_strlen (b[j].name) == mutt_strlen (tmp->data))) + { + res = 1; + break; + } + } + + if (!MoreArgs (s)) + { + snprintf (err->data, err->dsize, _("ifdef: too few arguments")); + return (-1); + } + mutt_extract_token (tmp, s, MUTT_TOKEN_SPACE); + + if (res) + { + if (mutt_parse_rc_buffer (tmp, &token, err) == -1) + { + mutt_error ("Erreur: %s", err->data); + FREE (&token.data); + return (-1); + } + FREE (&token.data); + } + return 0; +} + static int parse_unignore (BUFFER *buf, BUFFER *s, union pointer_long_t udata, BUFFER *err) { do ---- init.h.orig 2020-11-08 20:52:48 UTC +--- init.h.orig 2021-01-23 01:39:53 UTC +++ init.h @@ -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 *); +static int parse_ifdef (BUFFER *, BUFFER *, union pointer_long_t, BUFFER *); 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 *); @@ -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} }, + { "ifdef", parse_ifdef, {.l=0} }, #endif { "ignore", parse_ignore, {.l=0} }, { "index-format-hook",mutt_parse_idxfmt_hook, {.l=MUTT_IDXFMTHOOK} }, Index: head/mail/mutt/files/extra-patch-reverse_reply =================================================================== --- head/mail/mutt/files/extra-patch-reverse_reply (revision 562417) +++ head/mail/mutt/files/extra-patch-reverse_reply (revision 562418) @@ -1,91 +1,91 @@ ---- PATCHES.orig 2020-11-08 20:52:49 UTC +--- PATCHES.orig 2021-01-23 01:39:53 UTC +++ PATCHES @@ -0,0 +1 @@ +patch-1.5.6.cb.reverse_reply.2 ---- init.h.orig 2020-11-08 20:52:48 UTC +--- init.h.orig 2021-01-23 01:39:53 UTC +++ init.h @@ -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. */ + { "reverse_reply", DT_BOOL, R_NONE, {.l=OPTREVREPLY}, {.l=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, {.l=OPTRFC2047PARAMS}, {.l=0} }, /* ** .pp ---- mutt.h.orig 2020-11-08 20:52:48 UTC +--- mutt.h.orig 2021-01-23 01:39:53 UTC +++ mutt.h @@ -522,6 +522,7 @@ enum OPTREVALIAS, OPTREVNAME, OPTREVREAL, + OPTREVREPLY, OPTRFC2047PARAMS, OPTSAVEADDRESS, OPTSAVEEMPTY, ---- protos.h.orig 2020-11-06 22:06:35 UTC +--- protos.h.orig 2021-01-21 20:23:24 UTC +++ protos.h @@ -85,6 +85,7 @@ char* mutt_extract_message_id (const char *, const cha 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 2020-11-03 17:50:37 UTC +--- send.c.orig 2021-01-21 20:23:24 UTC +++ send.c @@ -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); + 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); if (env->cc && !env->to) ---- sendlib.c.orig 2020-11-03 17:50:37 UTC +--- sendlib.c.orig 2021-01-21 20:23:24 UTC +++ sendlib.c -@@ -3007,6 +3007,35 @@ static void set_noconv_flags (BODY *b, short flag) +@@ -3012,6 +3012,35 @@ static void set_noconv_flags (BODY *b, short flag) } } +/* 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, SEND_CONTEXT *sctx, const char *msgid, int post, const char *fcc) { HEADER *hdr;