From owner-svn-ports-head@FreeBSD.ORG Fri Aug 30 15:14:27 2013 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D5B60D74; Fri, 30 Aug 2013 15:14:27 +0000 (UTC) (envelope-from amdmi3@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B29262C31; Fri, 30 Aug 2013 15:14:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7UFERrl011373; Fri, 30 Aug 2013 15:14:27 GMT (envelope-from amdmi3@svn.freebsd.org) Received: (from amdmi3@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7UFEQQf011369; Fri, 30 Aug 2013 15:14:26 GMT (envelope-from amdmi3@svn.freebsd.org) Message-Id: <201308301514.r7UFEQQf011369@svn.freebsd.org> From: Dmitry Marakasov Date: Fri, 30 Aug 2013 15:14:26 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r325704 - in head/mail/mutt: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Aug 2013 15:14:27 -0000 Author: amdmi3 Date: Fri Aug 30 15:14:26 2013 New Revision: 325704 URL: http://svnweb.freebsd.org/changeset/ports/325704 Log: - Add SMARTDATE patch. - Fix MAILDIR_HEADER_CACHE if IMAP_HEADER_CACHE is not set - Add options to disable TLS versions 1.1 and 1.2 if OPENSSL >= 1.0.0 is used (taken from upstream) - Fix broken link in package description - Bumped PORTREVISION PR: 181431, 181319 Submitted by: Udo Schweigert (maintainer) Added: head/mail/mutt/files/extra-patch-smartdate (contents, props changed) head/mail/mutt/files/patch-tls-version (contents, props changed) Modified: head/mail/mutt/Makefile head/mail/mutt/pkg-descr Modified: head/mail/mutt/Makefile ============================================================================== --- head/mail/mutt/Makefile Fri Aug 30 15:04:54 2013 (r325703) +++ head/mail/mutt/Makefile Fri Aug 30 15:14:26 2013 (r325704) @@ -9,7 +9,7 @@ PORTNAME= mutt PORTVERSION= 1.5.21 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES+= mail ipv6 MASTER_SITES= ftp://ftp.mutt.org/mutt/devel/ \ ftp://ftp.fu-berlin.de/pub/unix/mail/mutt/devel/ \ @@ -66,8 +66,8 @@ OPTIONS_DEFINE= COMPRESSED_FOLDERS SASL MAILDIR_HEADER_CACHE MAILDIR_MTIME_PATCH \ NNTP PARENT_CHILD_MATCH_PATCH \ QUOTE_PATCH REVERSE_REPLY_PATCH SGMLFORMAT SIDEBAR_PATCH \ - SIGNATURE_MENU SMIME_OUTLOOK_COMPAT SMTP TOKYOCABINET \ - TRASH_PATCH XML + SIGNATURE_MENU SMART_DATE SMIME_OUTLOOK_COMPAT SMTP \ + TOKYOCABINET TRASH_PATCH XML OPTIONS_SINGLE= SCREEN OPTIONS_RADIO= SPELL @@ -97,6 +97,7 @@ SGMLFORMAT_DESC= SGML support SIDEBAR_PATCH_DESC= Sidebar support SIGNATURE_MENU_DESC= Signature menu SLANG_DESC= SLANG support +SMART_DATE_DESC= Dynamic date formatting with "%@" SMIME_OUTLOOK_COMPAT_DESC= SMIME outlook compatibility SMTP_DESC= SMTP relay support TOKYOCABINET_DESC= Use tokyocabinet instead of Berkley DB @@ -194,6 +195,11 @@ post-patch:: @${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-smime-outlook .endif +.if ${PORT_OPTIONS:MSMART_DATE} +post-patch:: + @${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-smartdate +.endif + .if ${PORT_OPTIONS:MSIGNATURE_MENU} IGNORE= the WITH_SIGNATURE_MENU does not work at the moment XML_NEEDED= yes @@ -390,7 +396,7 @@ SCRIPTS_ENV+= COMPRESSED_FOLDERS="yes" SCRIPTS_ENV+= QUOTE_PATCH="yes" .endif -.if ${PORT_OPTIONS:MIMAP_HEADER_CACHE} +.if ${PORT_OPTIONS:MIMAP_HEADER_CACHE} || ${PORT_OPTIONS:MMAILDIR_HEADER_CACHE} .if ${PORT_OPTIONS:MTOKYOCABINET} CONFIGURE_ARGS+= --enable-hcache --without-gdbm --without-bdb --with-tokyocabinet LIB_DEPENDS+= tokyocabinet.9:${PORTSDIR}/databases/tokyocabinet Added: head/mail/mutt/files/extra-patch-smartdate ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/mail/mutt/files/extra-patch-smartdate Fri Aug 30 15:14:26 2013 (r325704) @@ -0,0 +1,126 @@ +--- mutt.h ++++ mutt.h +@@ -133,6 +133,16 @@ + M_FORMAT_NOFILTER = (1<<7) /* do not allow filtering on this pass */ + } format_flag; + ++/* flags for SmartDate */ ++typedef enum { ++ FUTURE = 1, ++ SMARTTIME = 2, ++ YESTERDAY = 3, ++ WEEKDAY = 4, ++ STANDARD = 5, ++ ANCIENT = 6 ++} smartdate_type; ++ + /* types for mutt_add_hook() */ + #define M_FOLDERHOOK 1 + #define M_MBOXHOOK (1<<1) +--- hdrline.c ++++ hdrline.c +@@ -231,6 +231,89 @@ + * %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label) + * %Z = status flags */ + ++static void ++format_smartdate( char *buf, size_t max, struct tm *tm, smartdate_type type ) ++{ ++ char *strftime_fmt = NULL; ++ ++ switch( type ) { ++ case FUTURE: /* Date in the future */ ++ strftime_fmt = "%d%h%y!"; ++ break; ++ case SMARTTIME: /* Today */ ++ strftime_fmt = "%I:%M %p"; ++ break; ++ case YESTERDAY: /* Yesterday */ ++ strncpy( buf, "Yesterday", max ); ++ break; ++ case WEEKDAY: /* Within the last 7 days */ ++ strftime_fmt = "%A"; ++ break; ++ case STANDARD: /* Within the last six months */ ++ strftime_fmt = "%h %d"; ++ break; ++ case ANCIENT: /* Older than 6 months */ ++ strftime_fmt = "%h %Y"; ++ break; ++ } ++ ++ if( strftime_fmt != NULL ) { ++ strftime( buf, max, strftime_fmt, tm ); ++ } ++} ++ ++static void ++smartdate( char *buf, size_t max, struct tm *tm ) ++{ ++ smartdate_type type = 0; ++ ++ struct tm now; ++ ++ time_t sse = mktime( tm ); /* Seconds since epoch */ ++ time_t sse_now = time(NULL); /* Seconds since epoch until now */ ++ ++ int dse = 0; /* Days since epoch */ ++ int dse_now = 0; /* Days since epoch until today */ ++ ++ /* Calculate the number of days since epoch */ ++ dse = sse / (60*60*24); ++ dse_now = sse_now / (60*60*24); ++ ++ /* Default display type */ ++ type = STANDARD; ++ ++ /* Check if the date is in the future */ ++ if( dse > dse_now ) { ++ type = FUTURE; ++ } ++ else { ++ int diff = dse_now - dse; ++ if( diff == 0 ) type = SMARTTIME; ++ else if( diff == 1 ) type = YESTERDAY; ++ else if( diff < 7 ) type = WEEKDAY; ++ else if( diff > 215 ) type = ANCIENT; /* Surely older than six ++ months */ ++ else if( diff > 180 ) { ++ /* ++ * Slightly heavy calculation to check if the date is more ++ * than six months in the past. This calculation uses ++ * calendar months and not the exact number of days. So, ++ * January 31, 2003 would be considered more than six months ++ * old whether today's date is August 1 or August 31, 2003 ++ */ ++ int monthdiff; ++ localtime_r( &sse_now, &now ); ++ monthdiff = ( now.tm_mon - tm->tm_mon ) ++ + ( ( now.tm_year - tm->tm_year ) * 12 ); ++ if( monthdiff > 6 ) { ++ type = ANCIENT; ++ } ++ } ++ } ++ ++ format_smartdate( buf, max, tm, type ); ++} ++ + static const char * + hdr_format_str (char *dest, + size_t destlen, +@@ -462,7 +545,13 @@ + tm = gmtime (&T); + } + +- strftime (buf2, sizeof (buf2), dest, tm); ++ /* Identify the non-strftime smartdate pattern (%@) */ ++ if( strncmp( dest, "%@", 2 ) == 0 ) { ++ smartdate( buf2, sizeof( buf2 ), tm ); ++ } ++ else { ++ strftime (buf2, sizeof (buf2), dest, tm); ++ } + + if (do_locales) + setlocale (LC_TIME, "C"); Added: head/mail/mutt/files/patch-tls-version ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/mail/mutt/files/patch-tls-version Fri Aug 30 15:14:26 2013 (r325704) @@ -0,0 +1,112 @@ +--- init.h.orig 2010-09-15 08:39:31.000000000 -0700 ++++ init.h 2012-03-28 10:58:42.870572835 -0700 +@@ -2972,6 +2972,18 @@ struct option_t MuttVars[] = { + ** SSL authentication process. + */ + #ifdef USE_SSL_OPENSSL ++ { "ssl_use_tlsv1_1", DT_BOOL, R_NONE, OPTTLSV1_1, 1 }, ++ /* ++ ** .pp ++ ** This variable specifies whether to attempt to use TLSv1.1 in the ++ ** SSL authentication process. ++ */ ++ { "ssl_use_tlsv1_2", DT_BOOL, R_NONE, OPTTLSV1_2, 1 }, ++ /* ++ ** .pp ++ ** This variable specifies whether to attempt to use TLSv1.2 in the ++ ** SSL authentication process. ++ */ + { "ssl_usesystemcerts", DT_BOOL, R_NONE, OPTSSLSYSTEMCERTS, 1 }, + /* + ** .pp +--- mutt.h 2010-09-13 10:19:55.000000000 -0700 ++++ mutt.h 2012-03-28 10:59:24.437237530 -0700 +@@ -376,6 +376,8 @@ enum + # endif /* USE_SSL_GNUTLS */ + OPTSSLV3, + OPTTLSV1, ++ OPTTLSV1_1, ++ OPTTLSV1_2, + OPTSSLFORCETLS, + OPTSSLVERIFYDATES, + OPTSSLVERIFYHOST, +--- mutt_ssl.c.orig 2010-08-25 18:31:40.000000000 +0200 ++++ mutt_ssl.c 2013-08-20 13:51:14.000000000 +0200 +@@ -100,12 +100,33 @@ + goto bail; + + ssldata = (sslsockdata*) safe_calloc (1, sizeof (sslsockdata)); +- /* the ssl_use_xxx protocol options don't apply. We must use TLS in TLS. */ +- if (! (ssldata->ctx = SSL_CTX_new (TLSv1_client_method ()))) ++ /* the ssl_use_xxx protocol options don't apply. We must use TLS in TLS. ++ * TLSv1.2 support was added in OpenSSL 1.0.1. RHEL6 shipped with 1.0.0 so ++ * our configure script checks for TLSv1.2 availability. ++ */ ++ if (! (ssldata->ctx = SSL_CTX_new ( ++#ifdef HAVE_TLSV1_2_CLIENT_METHOD ++ TLSv1_2_client_method () ++#else ++ TLSv1_client_method () ++#endif ++ ))) + { + dprint (1, (debugfile, "mutt_ssl_starttls: Error allocating SSL_CTX\n")); + goto bail_ssldata; + } ++#ifdef SSL_OP_NO_TLSv1_1 ++ if (!option(OPTTLSV1_1)) ++ { ++ SSL_CTX_set_options(ssldata->ctx, SSL_OP_NO_TLSv1_1); ++ } ++#endif ++#ifdef SSL_OP_NO_TLSv1_2 ++ if (!option(OPTTLSV1_2)) ++ { ++ SSL_CTX_set_options(ssldata->ctx, SSL_OP_NO_TLSv1_2); ++ } ++#endif + + ssl_get_client_cert(ssldata, conn); + +@@ -303,6 +324,21 @@ + { + SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1); + } ++ /* TLSv1.1/1.2 support was added in OpenSSL 1.0.1, but some OS distros such ++ * as Fedora 17 are on OpenSSL 1.0.0. ++ */ ++#ifdef SSL_OP_NO_TLSv1_1 ++ if (!option(OPTTLSV1_1)) ++ { ++ SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_1); ++ } ++#endif ++#ifdef SSL_OP_NO_TLSv1_2 ++ if (!option(OPTTLSV1_2)) ++ { ++ SSL_CTX_set_options(data->ctx, SSL_OP_NO_TLSv1_2); ++ } ++#endif + if (!option(OPTSSLV2)) + { + SSL_CTX_set_options(data->ctx, SSL_OP_NO_SSLv2); +@@ -375,8 +411,8 @@ + if (!ssl_check_certificate (conn, ssldata)) + return -1; + +- mutt_message (_("SSL connection using %s (%s)"), +- SSL_get_cipher_version (ssldata->ssl), SSL_get_cipher_name (ssldata->ssl)); ++ mutt_message (_("%s connection using %s (%s)"), ++ SSL_get_version(ssldata->ssl), SSL_get_cipher_version (ssldata->ssl), SSL_get_cipher_name (ssldata->ssl)); + mutt_sleep (0); + + return 0; +@@ -911,7 +947,7 @@ + + static int interactive_check_cert (X509 *cert, int idx, int len) + { +- char *part[] = ++ static const char * const part[] = + {"/CN=", "/Email=", "/O=", "/OU=", "/L=", "/ST=", "/C="}; + char helpstr[LONG_STRING]; + char buf[STRING]; Modified: head/mail/mutt/pkg-descr ============================================================================== --- head/mail/mutt/pkg-descr Fri Aug 30 15:04:54 2013 (r325703) +++ head/mail/mutt/pkg-descr Fri Aug 30 15:14:26 2013 (r325704) @@ -6,6 +6,6 @@ Features include color support, message RFC1522 support for encoded headers), customizable key bindings, POP3, Delivery Status Notification (DSN) support, and PGP/MIME. -Mutt User Information: http://www.math.fu-berlin.de/~guckes/mutt/ +Mutt FAQ: http://dev.mutt.org/trac/wiki/MuttFaq WWW: http://www.mutt.org/