From owner-freebsd-ports-bugs@FreeBSD.ORG Tue Aug 20 13:50:01 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.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 463D93D6 for ; Tue, 20 Aug 2013 13:50:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (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 1A789206C for ; Tue, 20 Aug 2013 13:50:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r7KDo0fo046020 for ; Tue, 20 Aug 2013 13:50:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r7KDo09k046019; Tue, 20 Aug 2013 13:50:00 GMT (envelope-from gnats) Resent-Date: Tue, 20 Aug 2013 13:50:00 GMT Resent-Message-Id: <201308201350.r7KDo09k046019@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Udo Schweigert Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 21372F21 for ; Tue, 20 Aug 2013 13:41:10 +0000 (UTC) (envelope-from udo.schweigert@siemens.com) Received: from thoth.sbs.de (thoth.sbs.de [192.35.17.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8DC9C2FD3 for ; Tue, 20 Aug 2013 13:41:08 +0000 (UTC) Received: from mail1.siemens.de (localhost [127.0.0.1]) by thoth.sbs.de (8.13.6/8.13.6) with ESMTP id r7KD1qkm003431 for ; Tue, 20 Aug 2013 15:01:52 +0200 Received: from mars.cert.siemens.com (mars.cert.siemens.com [139.25.19.9]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id r7KD1qt9023826 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 20 Aug 2013 15:01:52 +0200 Received: from alaska.cert.siemens.de (alaska.cert.siemens.com [139.25.6.64]) by mars.cert.siemens.com (8.14.7/8.14.7/$SiemensCERT: trunk/mail/cert.mc.pre 6573 2013-03-29 22:52:06Z ust $) with ESMTP id r7KD1qeJ070187 for ; Tue, 20 Aug 2013 15:01:52 +0200 (CEST) (envelope-from ust@cert.siemens.de) Received: from alaska.cert.siemens.de (alaska.cert.siemens.com [139.25.6.64] (may be forged)) by alaska.cert.siemens.de (8.14.7/8.14.7/$Ust: trunk/hosts/alaska/mail/config.mc 9409 2013-03-25 08:26:38Z ust $) with ESMTP id r7KD1qFU080468 for ; Tue, 20 Aug 2013 15:01:52 +0200 (CEST) (envelope-from ust@alaska.cert.siemens.de) Received: (from ust@localhost) by alaska.cert.siemens.de (8.14.7/8.14.7/$Ust: trunk/hosts/alaska/mail/submit.mc 9525 2013-05-06 05:58:13Z ust $) id r7KD1qTi046023; Tue, 20 Aug 2013 15:01:52 +0200 (CEST) (envelope-from ust) Message-Id: <201308201301.r7KD1qTi046023@alaska.cert.siemens.de> Date: Tue, 20 Aug 2013 15:01:52 +0200 (CEST) From: Udo Schweigert To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.114 Subject: ports/181431: maintainer-update of mail/mutt X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Udo Schweigert List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Aug 2013 13:50:01 -0000 >Number: 181431 >Category: ports >Synopsis: maintainer-update of mail/mutt >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: maintainer-update >Submitter-Id: current-users >Arrival-Date: Tue Aug 20 13:50:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Udo Schweigert >Release: FreeBSD 8.4-RELEASE amd64 >Organization: >Environment: >Description: Maintainer update of mail/mutt: - 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 Commiter: new files to be added to repo: files/extra-patch-smartdate files/patch-tls-version PR 181319 can therefore be closed. >How-To-Repeat: >Fix: diff -ru /usr/ports/mail/mutt/Makefile ./Makefile --- /usr/ports/mail/mutt/Makefile 2013-07-17 06:07:43.000000000 +0200 +++ ./Makefile 2013-08-20 12:45:15.000000000 +0200 @@ -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 @@ 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 @@ 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 @@ @${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+= 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 diff -ru /usr/ports/mail/mutt/files/extra-patch-smartdate ./files/extra-patch-smartdate --- /usr/ports/mail/mutt/files/extra-patch-smartdate 1970-01-01 01:00:00.000000000 +0100 +++ ./files/extra-patch-smartdate 2013-08-20 12:16:50.000000000 +0200 @@ -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"); diff -ru /usr/ports/mail/mutt/files/patch-tls-version ./files/patch-tls-version --- /usr/ports/mail/mutt/files/patch-tls-version 1970-01-01 01:00:00.000000000 +0100 +++ ./files/patch-tls-version 2013-08-20 13:52:56.000000000 +0200 @@ -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]; diff -ru /usr/ports/mail/mutt/pkg-descr ./pkg-descr --- /usr/ports/mail/mutt/pkg-descr 2013-03-14 08:34:30.338488000 +0100 +++ ./pkg-descr 2013-08-20 12:39:32.000000000 +0200 @@ -6,6 +6,6 @@ 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/ >Release-Note: >Audit-Trail: >Unformatted: