1: fix utf-8 decoding.

2: convert to optionng.

PR:		ports/169780
Submitted by:	Kuan-Chung Chiu <buganini@gmail.com> [1]
This commit is contained in:
Vanilla I. Shu 2012-08-13 15:08:03 +00:00
parent 284cac9d87
commit 5876ab6ca0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=302471
2 changed files with 55 additions and 14 deletions

View file

@ -7,14 +7,14 @@
PORTNAME= irssi
PORTVERSION= 0.8.15
PORTREVISION= 3
PORTREVISION= 4
CATEGORIES?= irc
MASTER_SITES= http://mirror.irssi.org/
MAINTAINER?= vanilla@FreeBSD.org
COMMENT?= A modular IRC client with many features
LIB_DEPENDS= glib-2.0:${PORTSDIR}/devel/glib20
LIB_DEPENDS= glib-2:${PORTSDIR}/devel/glib20
CONFLICTS= irssi-devel-[0-9]* zh-irssi-[0-9]*
@ -26,11 +26,14 @@ WANT_PERL= yes
MAN1= irssi.1
OPTIONS= PERL "Enable perl support" on \
PROXY "Enable proxy support" off \
SOCKS "Enable socks proxy support" off \
IPV6 "Enable IPv6" on \
BOT "Enable bot" off
OPTIONS_DEFINE= PERL PROXY SOCKS IPV6 BOT
PERL_DESC= Perl support
PROXY_DESC= Proxy support
SOCKS_DESC= Socks proxy support
IPV6_DESC= IPV6 support
BOT_DESC= Bot support
OPTIONS_DEFAULT= PERL IPV6
# USE_OPENSSL must be defined before bsd.port.pre.mk so use old schema
# for WITH_SSL option
@ -40,11 +43,11 @@ CONFIGURE_ARGS+= --disable-ssl
USE_OPENSSL= yes
.endif
.include <bsd.port.pre.mk>
.include <bsd.port.options.mk>
# Process options.
.if !defined(WITHOUT_PERL)
.if ${PORT_OPTIONS:MPERL}
USE_PERL5= yes
CONFIGURE_ARGS+= --with-perl-lib=site
PLIST_SUB+= WITH_PERL=""
@ -53,23 +56,23 @@ CONFIGURE_ARGS+= --without-perl
PLIST_SUB+= WITH_PERL="@comment "
.endif
.if defined(WITH_PROXY)
.if ${PORT_OPTIONS:MPROXY}
CONFIGURE_ARGS+= --with-proxy
PLIST_SUB+= WITH_PROXY=""
.else
PLIST_SUB+= WITH_PROXY="@comment "
.endif
.if defined(WITH_SOCKS)
.if ${PORT_OPTIONS:MSOCKS}
CONFIGURE_ARGS+= --with-socks
.endif
.if defined(WITHOUT_IPV6)
.if !${PORT_OPTIONS:MIPV6}
CONFIGURE_ARGS+= --disable-ipv6
CATEGORIES+= ipv6
.endif
.if defined(WITH_BOT)
.if ${PORT_OPTIONS:MBOT}
CONFIGURE_ARGS+= --with-bot
PLIST_SUB+= WITH_BOT=""
.else
@ -92,4 +95,4 @@ post-install:
@${ECHO_MSG} "You may install x11-themes/irssi-themes for"
@${ECHO_MSG} " additional themes."
.include <bsd.port.post.mk>
.include <bsd.port.mk>

View file

@ -0,0 +1,38 @@
#
# $FreeBSD$
#
--- src/fe-common/core/utf8.h (revision 5189)
+++ src/fe-common/core/utf8.h (working copy)
@@ -12,5 +12,6 @@
int mk_wcwidth(unichar c);
#define unichar_isprint(c) (((c) & ~0x80) >= 32)
+#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
#endif
--- src/fe-text/textbuffer.c (revision 5189)
+++ src/fe-text/textbuffer.c (working copy)
@@ -23,6 +23,7 @@
#include "module.h"
#include "misc.h"
#include "formats.h"
+#include "utf8.h"
#include "textbuffer.h"
@@ -157,6 +158,16 @@
if (left > 0 && data[left-1] == 0)
left--; /* don't split the commands */
+ /* don't split utf-8 character. (assume we can split non-utf8 anywhere. */
+ if (left < TEXT_CHUNK_USABLE_SIZE && !is_utf8_leading(data[left])) {
+ int i;
+ for (i = 1; i < 4 && left >= i; i++)
+ if (is_utf8_leading(data[left - i])) {
+ left -= i;
+ break;
+ }
+ }
+
memcpy(chunk->buffer + chunk->pos, data, left);
chunk->pos += left;