Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Dec 2016 15:54:56 +0000 (UTC)
From:      "Vanilla I. Shu" <vanilla@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org
Subject:   svn commit: r427567 - in branches/2016Q4/chinese/mutt: . files
Message-ID:  <201612021554.uB2FsuMT091738@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vanilla
Date: Fri Dec  2 15:54:56 2016
New Revision: 427567
URL: https://svnweb.freebsd.org/changeset/ports/427567

Log:
  MFH: r427541
  
  Fix building with mutt-1.7.2.
  
  Approved by:	portmgr@ (feld@)

Added:
  branches/2016Q4/chinese/mutt/files/patch-init.h
     - copied unchanged from r427541, head/chinese/mutt/files/patch-init.h
  branches/2016Q4/chinese/mutt/files/patch-mbyte.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-mbyte.c
  branches/2016Q4/chinese/mutt/files/patch-mutt.h
     - copied unchanged from r427541, head/chinese/mutt/files/patch-mutt.h
  branches/2016Q4/chinese/mutt/files/patch-myiconv.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-myiconv.c
  branches/2016Q4/chinese/mutt/files/patch-pager.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-pager.c
  branches/2016Q4/chinese/mutt/files/patch-parse.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-parse.c
  branches/2016Q4/chinese/mutt/files/patch-pgp.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-pgp.c
  branches/2016Q4/chinese/mutt/files/patch-sendlib.c
     - copied unchanged from r427541, head/chinese/mutt/files/patch-sendlib.c
Deleted:
  branches/2016Q4/chinese/mutt/files/patch-zh-mutt
Modified:
  branches/2016Q4/chinese/mutt/Makefile
Directory Properties:
  branches/2016Q4/   (props changed)

Modified: branches/2016Q4/chinese/mutt/Makefile
==============================================================================
--- branches/2016Q4/chinese/mutt/Makefile	Fri Dec  2 15:29:16 2016	(r427566)
+++ branches/2016Q4/chinese/mutt/Makefile	Fri Dec  2 15:54:56 2016	(r427567)
@@ -6,7 +6,7 @@ CATEGORIES=	chinese
 
 MASTERDIR=	${.CURDIR}/../../mail/mutt
 #REVISEDATE=	20100927
-#PORTREVISION=	${REVISEDATE}
+PORTREVISION=	3
 
 # XXX: Currently PORTREVISION assignment is not perfect. It needs to
 # inherit its master port's PORTREVISION and be appended.
@@ -38,5 +38,6 @@ post-patch::
 		${ECHO_MSG} "===>  Applying extra patch $$i"; \
 		${PATCH} ${PATCH_ARGS} < $$i; \
 	done
+	@${REINPLACE_CMD} -e 's|裏|裡|' ${WRKSRC}/po/zh_TW.po
 
 .include "${MASTERDIR}/Makefile"

Copied: branches/2016Q4/chinese/mutt/files/patch-init.h (from r427541, head/chinese/mutt/files/patch-init.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-init.h	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-init.h)
@@ -0,0 +1,32 @@
+--- init.h.orig	2016-12-02 11:18:42.572961000 +0800
++++ init.h	2016-12-02 11:18:42.600298000 +0800
+@@ -290,6 +290,11 @@ struct option_t MuttVars[] = {
+   ** .pp
+   ** Also see $$fast_reply.
+   */
++  { "bbsislame",	DT_BOOL, R_NONE, OPTBBSISLAME, 0 },
++  /*
++  ** .pp
++  ** When this variable is set, mutt will beep when an error occurs.
++  */
+   { "beep",		DT_BOOL, R_NONE, OPTBEEP, 1 },
+   /*
+   ** .pp
+@@ -2667,7 +2672,7 @@ struct option_t MuttVars[] = {
+   ** For the pager, this variable specifies the number of lines shown
+   ** before search results. By default, search results will be top-aligned.
+   */
+-  { "send_charset",	DT_STR,  R_NONE, UL &SendCharset, UL "us-ascii:iso-8859-1:utf-8" },
++  { "send_charset",	DT_STR,  R_NONE, UL &SendCharset, UL "big5:gb2312:us-ascii:iso-8859-1:utf-8" },
+   /*
+   ** .pp
+   ** A colon-delimited list of character sets for outgoing messages. Mutt will use the
+@@ -3649,7 +3654,7 @@ struct option_t MuttVars[] = {
+   ** When \fIset\fP, Mutt will jump to the next unread message, if any,
+   ** when the current thread is \fIun\fPcollapsed.
+   */
+-  { "use_8bitmime",	DT_BOOL, R_NONE, OPTUSE8BITMIME, 0 },
++  { "use_8bitmime",	DT_BOOL, R_NONE, OPTUSE8BITMIME, 1 },
+   /*
+   ** .pp
+   ** \fBWarning:\fP do not set this variable unless you are using a version

Copied: branches/2016Q4/chinese/mutt/files/patch-mbyte.c (from r427541, head/chinese/mutt/files/patch-mbyte.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-mbyte.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-mbyte.c)
@@ -0,0 +1,135 @@
+--- mbyte.c.orig	2016-10-09 03:35:50.000000000 +0800
++++ mbyte.c	2016-12-02 11:18:42.600658000 +0800
+@@ -24,6 +24,9 @@
+ # include "config.h"
+ #endif
+ 
++/*
++ * Trad. Chinese (Big5) support by yjchou@linux.cis.nctu.edu.tw
++ */
+ #include "mutt.h"
+ #include "mbyte.h"
+ #include "charset.h"
+@@ -39,6 +42,7 @@
+ int Charset_is_utf8 = 0;
+ #ifndef HAVE_WC_FUNCS
+ static int charset_is_ja = 0;
++static int charset_is_big5 = 0;
+ static iconv_t charset_to_utf8 = (iconv_t)(-1);
+ static iconv_t charset_from_utf8 = (iconv_t)(-1);
+ #endif
+@@ -52,6 +56,7 @@ void mutt_set_charset (char *charset)
+   Charset_is_utf8 = 0;
+ #ifndef HAVE_WC_FUNCS
+   charset_is_ja = 0;
++  charset_is_big5 = 0;
+   if (charset_to_utf8 != (iconv_t)(-1))
+   {
+     iconv_close (charset_to_utf8);
+@@ -82,6 +87,14 @@ void mutt_set_charset (char *charset)
+     charset_from_utf8 = mutt_iconv_open (charset, "utf-8", 0);
+   }
+ #endif
++#ifndef HAVE_WC_FUNCS
++  else if (!strcmp(buffer, "big5"))
++  {
++    charset_is_big5 = 1;
++    charset_to_utf8 = iconv_open ("UTF-8", charset);
++    charset_from_utf8 = iconv_open (charset, "UTF-8");
++  }
++#endif
+ 
+ #if defined(HAVE_BIND_TEXTDOMAIN_CODESET) && defined(ENABLE_NLS)
+   bind_textdomain_codeset(PACKAGE, buffer);
+@@ -256,7 +269,7 @@ size_t mbrtowc (wchar_t *pwc, const char
+ 
+ int iswprint (wint_t wc)
+ {
+-  if (Charset_is_utf8 || charset_is_ja)
++  if (Charset_is_utf8 || charset_is_ja || charset_is_big5)
+     return ((0x20 <= wc && wc < 0x7f) || 0xa0 <= wc);
+   else
+     return (0 <= wc && wc < 256) ? IsPrint (wc) : 0;
+@@ -264,7 +277,7 @@ int iswprint (wint_t wc)
+ 
+ int iswspace (wint_t wc)
+ {
+-  if (Charset_is_utf8 || charset_is_ja)
++  if (Charset_is_utf8 || charset_is_ja || charset_is_big5)
+     return (9 <= wc && wc <= 13) || wc == 32;
+   else
+     return (0 <= wc && wc < 256) ? isspace (wc) : 0;
+@@ -347,7 +360,7 @@ static int iswalpha_ucs (wint_t wc)
+ 
+ wint_t towupper (wint_t wc)
+ {
+-  if (Charset_is_utf8 || charset_is_ja)
++  if (Charset_is_utf8 || charset_is_ja || charset_is_big5)
+     return towupper_ucs (wc);
+   else
+     return (0 <= wc && wc < 256) ? toupper (wc) : wc;
+@@ -355,7 +368,7 @@ wint_t towupper (wint_t wc)
+ 
+ wint_t towlower (wint_t wc)
+ {
+-  if (Charset_is_utf8 || charset_is_ja)
++  if (Charset_is_utf8 || charset_is_ja || charset_is_big5)
+     return towlower_ucs (wc);
+   else
+     return (0 <= wc && wc < 256) ? tolower (wc) : wc;
+@@ -363,7 +376,7 @@ wint_t towlower (wint_t wc)
+ 
+ int iswalnum (wint_t wc)
+ {
+-  if (Charset_is_utf8 || charset_is_ja)
++  if (Charset_is_utf8 || charset_is_ja || charset_is_big5)
+     return iswalnum_ucs (wc);
+   else
+     return (0 <= wc && wc < 256) ? isalnum (wc) : 0;
+@@ -404,13 +417,31 @@ int wcwidth_ja (wchar_t ucs)
+     return -1;
+ }
+ 
++int wcwidth_big5(wchar_t ucs)
++{
++  return wcwidth_ja (ucs);
++}
++
+ int wcwidth_ucs(wchar_t ucs);
+ 
+ int wcwidth (wchar_t wc)
+ {
+   if (!Charset_is_utf8)
+   {
+-    if (!charset_is_ja)
++    if (charset_is_ja)
++    {
++      /* Japanese */
++      int k = wcwidth_ja (wc);
++      if (k != -1)
++	return k;
++    }
++    else if (charset_is_big5)
++    {
++      int k = wcwidth_big5 (wc);
++      if (k != -1)
++        return k;
++    }
++    else
+     {
+       /* 8-bit case */
+       if (!wc)
+@@ -420,13 +451,6 @@ int wcwidth (wchar_t wc)
+       else
+ 	return -1;
+     }
+-    else
+-    {
+-      /* Japanese */
+-      int k = wcwidth_ja (wc);
+-      if (k != -1)
+-	return k;
+-    }
+   }
+   return wcwidth_ucs (wc);
+ }

Copied: branches/2016Q4/chinese/mutt/files/patch-mutt.h (from r427541, head/chinese/mutt/files/patch-mutt.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-mutt.h	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-mutt.h)
@@ -0,0 +1,10 @@
+--- mutt.h.orig	2016-12-02 11:18:42.574880000 +0800
++++ mutt.h	2016-12-02 11:18:42.601038000 +0800
+@@ -342,6 +342,7 @@ enum
+   OPTATTACHSPLIT,
+   OPTAUTOEDIT,
+   OPTAUTOTAG,
++  OPTBBSISLAME,
+   OPTBEEP,
+   OPTBEEPNEW,
+   OPTBOUNCEDELIVERED,

Copied: branches/2016Q4/chinese/mutt/files/patch-myiconv.c (from r427541, head/chinese/mutt/files/patch-myiconv.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-myiconv.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-myiconv.c)
@@ -0,0 +1,170 @@
+--- myiconv.c.orig	2016-12-02 11:18:42.601104000 +0800
++++ myiconv.c	2016-12-02 11:18:42.601603000 +0800
+@@ -0,0 +1,167 @@
++/*
++ * Contributed by Kuang-che Wu <kcwu@kcwu.dyndns.org>
++ */
++#if HAVE_CONFIG_H
++# include "config.h"
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include "mutt.h"
++#include "charset.h"
++#include <hz.h>
++#include <dlfcn.h>                   
++
++
++
++#ifdef HAVE_ICONV
++
++typedef struct myiconv {
++    iconv_t cd;
++    int incode,outcode;
++    int myjob;
++} myiconv_t;
++
++static int is_init;
++static void *dlh;
++static iconv_t (*old_iconv_open)(const char *tocode, const char *fromcode);
++static size_t (*old_iconv)(iconv_t cd, ICONV_CONST char **inbuf, 
++	size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
++static int (*old_iconv_close) (iconv_t cd);
++static int inst;
++
++static void init(void)
++{
++    hz_setup();
++    dlh=dlopen("libiconv.so",RTLD_LAZY);
++    if(dlh) {
++	old_iconv_open=dlsym(dlh,"iconv_open");
++	old_iconv=dlsym(dlh,"iconv");
++	old_iconv_close=dlsym(dlh,"iconv_close");
++    }
++    is_init=1;
++}
++
++static size_t myconv(ICONV_CONST char **inbuf, 
++	size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
++{
++    /* reference to autogb.c */
++    int count;
++    char buff[MAX_BUFFER*3];
++    char *pbuf,*ps;
++    size_t rt=0;
++
++    pbuf=&buff[2];
++
++    count=*inbytesleft;
++    if(count>MAX_BUFFER) count=MAX_BUFFER;
++    memcpy(pbuf,*inbuf,count);
++    *inbuf+=count;
++    *inbytesleft-=count;
++    while(count>0) {
++	rt+=count;
++	ps=hz_convert(pbuf,&count,0);
++	memcpy(*outbuf,ps,count);
++	*outbuf+=count; *outbytesleft+=count;
++	pbuf=&buff[2];
++
++	count=*inbytesleft;
++	if(count>MAX_BUFFER) count=MAX_BUFFER;
++	memcpy(pbuf,*inbuf,count);
++	*inbuf+=count;
++	*inbytesleft-=count;
++    }
++    return rt;
++}
++
++int conv_str(const char* str_code)
++{
++    int i;
++    char *str;
++    struct mapping {
++	char *code;
++	int value;
++    } map[]={
++	{"gb2312",GB_CODE},
++	{"euccn",GB_CODE},
++	{"big5",BIG5_CODE},
++	{0,OTHER_CODE}, /* should we handle below cases? */
++	{"hz",HZ_CODE},
++	{"uni",UNI_CODE},
++	{"utf7",UTF7_CODE},
++	{"utf8",UTF8_CODE},
++    };
++    str=strdup(str_code);
++    if(strchr(str,'/'))
++	*strchr(str,'/')=0;
++    for(i=0;map[i].code;i++)
++	if(mutt_chscmp(str,map[i].code))
++	    break;
++    free(str);
++    return map[i].value; 
++}
++
++iconv_t iconv_open (const char *tocode, const char *fromcode)
++{
++    myiconv_t *mycd=(myiconv_t*)-1;
++    iconv_t cd;
++    char *_tocode, *_fromcode;
++
++    _tocode = tocode;
++    _fromcode = fromcode;
++
++    if (!mutt_strcmp(tocode,"big5")) _tocode = "big5-hkscs";
++    if (!mutt_strcmp(fromcode,"big5")) _fromcode = "big5-hkscs";
++
++    if(!is_init) init();
++    if(!old_iconv_open) 
++	return (iconv_t)(-1);
++
++    if((cd=old_iconv_open(_tocode,_fromcode))!=(iconv_t)-1) {
++    	mycd=(myiconv_t*)calloc(1,sizeof(myiconv_t));
++	mycd->cd=cd;
++	mycd->incode=conv_str(fromcode);
++	mycd->outcode=conv_str(tocode);
++	/* inst==0 is because:
++	   libhz only has one stack, and 
++	   it will destroy all instance's data when setup stack.
++
++	   If want to fix, libhz's init func should know which inst.
++	 */
++	if(inst==0 && mycd->incode!=mycd->outcode && 
++		hz_search(mycd->incode,mycd->outcode,8)) {
++	    inst++;
++	    mycd->myjob=1;
++	}
++    }
++    return (iconv_t)mycd;
++}
++
++size_t iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t *inbytesleft,
++	      char **outbuf, size_t *outbytesleft)
++{
++    myiconv_t *mycd=(myiconv_t*)cd;
++    size_t rt=(size_t)0;
++    if(mycd->myjob) {
++	if(!inbuf || !*inbuf || !outbuf || !*outbuf)
++	    hz_search(mycd->incode,mycd->outcode,8);
++	else
++	    rt=myconv(inbuf,inbytesleft,outbuf,outbytesleft);
++    } else if(old_iconv)
++	rt=old_iconv(mycd->cd,inbuf,inbytesleft,outbuf,outbytesleft);
++    return rt;
++}
++
++int iconv_close (iconv_t cd)
++{
++    myiconv_t *mycd=(myiconv_t*)cd;
++    if(!old_iconv_close)
++	return 0;
++    old_iconv_close(mycd->cd);
++    if(mycd->myjob)
++	inst--;
++    free(mycd);
++    return 0;
++}
++
++#endif

Copied: branches/2016Q4/chinese/mutt/files/patch-pager.c (from r427541, head/chinese/mutt/files/patch-pager.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-pager.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-pager.c)
@@ -0,0 +1,41 @@
+--- pager.c.orig	2016-10-09 03:35:50.000000000 +0800
++++ pager.c	2016-12-02 11:21:36.940396000 +0800
+@@ -20,6 +20,10 @@
+ # include "config.h"
+ #endif
+ 
++/*
++ * Trad. Chinese support by Michael Hsin <mhsin@mhsin.org>
++ */
++
+ #include "mutt.h"
+ #include "mutt_curses.h"
+ #include "mutt_regex.h"
+@@ -1101,7 +1105,7 @@ static int format_line (struct line_t **
+   int space = -1; /* index of the last space or TAB */
+   int col = option (OPTMARKERS) ? (*lineInfo)[n].continuation : 0;
+   size_t k;
+-  int ch, vch, last_special = -1, special = 0, t;
++  int ch, vch, last_special = -1, special = 0, t = 0, old_t = 0;
+   wchar_t wc;
+   mbstate_t mbstate;
+   int wrap_cols = mutt_window_wrap_cols (pager_window, (flags & MUTT_PAGER_NOWRAP) ? 0 : Wrap);
+@@ -1223,7 +1227,10 @@ static int format_line (struct line_t **
+ 	 * attempt to wrap at this character. */
+ 	wc = ' ';
+       }
++      old_t = t;
+       t = wcwidth (wc);
++      if (t > 1 || old_t > 1)
++        space = ch;
+       if (col + t > wrap_cols)
+ 	break;
+       col += t;
+@@ -1447,6 +1454,7 @@ display_line (FILE *f, LOFF_T *last_pos,
+       {
+ 	buf_ptr = buf + ch;
+ 	/* skip trailing blanks */
++        ch--;
+ 	while (ch && (buf[ch] == ' ' || buf[ch] == '\t' || buf[ch] == '\r'))
+ 	  ch--;
+         /* a very long word with leading spaces causes infinite wrapping */

Copied: branches/2016Q4/chinese/mutt/files/patch-parse.c (from r427541, head/chinese/mutt/files/patch-parse.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-parse.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-parse.c)
@@ -0,0 +1,14 @@
+--- parse.c.orig	2016-10-09 03:30:21.000000000 +0800
++++ parse.c	2016-12-02 11:18:42.603025000 +0800
+@@ -393,7 +393,10 @@ static void parse_content_disposition (c
+   {
+     s = skip_email_wsp(s + 1);
+     if ((s = mutt_get_parameter ("filename", (parms = parse_parameters (s)))))
+-      mutt_str_replace (&ct->filename, s);
++       {
++ 	mutt_str_replace (&ct->filename, s);
++ 	rfc2047_decode (&ct->filename);
++       }
+     if ((s = mutt_get_parameter ("name", parms)))
+       ct->form_name = safe_strdup (s);
+     mutt_free_parameter (&parms);

Copied: branches/2016Q4/chinese/mutt/files/patch-pgp.c (from r427541, head/chinese/mutt/files/patch-pgp.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-pgp.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-pgp.c)
@@ -0,0 +1,11 @@
+--- pgp.c.orig	2016-10-09 03:30:21.000000000 +0800
++++ pgp.c	2016-12-02 11:18:42.603476000 +0800
+@@ -1154,7 +1154,7 @@ BODY *pgp_sign_message (BODY *a)
+   int empty = 1;
+   pid_t thepid;
+   
+-  convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */
++  if (!option(OPTBBSISLAME)) convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */
+ 
+   mutt_mktemp (sigfile, sizeof (sigfile));
+   if ((fp = safe_fopen (sigfile, "w")) == NULL)

Copied: branches/2016Q4/chinese/mutt/files/patch-sendlib.c (from r427541, head/chinese/mutt/files/patch-sendlib.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2016Q4/chinese/mutt/files/patch-sendlib.c	Fri Dec  2 15:54:56 2016	(r427567, copy of r427541, head/chinese/mutt/files/patch-sendlib.c)
@@ -0,0 +1,11 @@
+--- sendlib.c.orig	2016-12-02 11:18:42.515424000 +0800
++++ sendlib.c	2016-12-02 11:18:42.605557000 +0800
+@@ -2494,7 +2494,7 @@ void mutt_prepare_envelope (ENVELOPE *en
+   rfc2047_encode_adrlist (env->reply_to, "Reply-To");
+   rfc2047_encode_string (&env->x_label);
+ 
+-  if (env->subject)
++  if (env->subject && !option(OPTBBSISLAME))
+   {
+     rfc2047_encode_string (&env->subject);
+   }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612021554.uB2FsuMT091738>