The Man Who Fell From The Wrong Side Of The Sky:2008年8月12日分

[最新版] [一覧] [前月] [今月] [翌月]

2008/8/12(Tue)

今日

なるせさんとこより。

regenc を Citrus ベースで置き換えるのは興味があったりも。
stateful encoding あたりまではさすがに腰が引けますが。

すばらしい。

でも J( 'ー`)し ごめんね Citrus 単体で配布できるようにしてないの ごめんね *1

ということでやぱしsrc/external/bsd/citrusとかに移して
単体でcheckoutできるようにしといた方がCitrusに興味持ってもらえそうなの鴨ね。

でも J( 'ー`)し カーチャン BSD make ジャンキーで GNU Autotool 使えないの ごめんね *2

きむらさんとこ、 ネコを撮る / 岩合 光昭 とかお読みになるといいかと。

ahoka氏宛のレビュー書いた、あとで送る。


*1:まぁそれより世の常としてcommit権を無理矢理(以下略
*2:かつては Java 屋だったのに Ant も Maven も使えないの、会社のみんな ごめんね

[NetBSD] wcwidth(3)

ひーahoka氏と話が噛み合わなくのでなんでだろーと思ってたら
いまさら気付いたのだがNetBSDのwcwidth(3)バグッとるwww
SUSv3読むとisprint(3)にマッチしない文字はL'\0'の場合は0、それ以外は-1を返せとあるんだが
がっつり常に0返しよるwww

これどしよ、ほんとうならmklocale(1)いじってLC_CTYPE dbに-1入れときたいんだが
これ_RuneTypeの下位bit使ってるんで無理なんだよなぁ。

Index: locale/iswctype.c
===================================================================
RCS file: /cvsroot/src/lib/libc/locale/iswctype.c,v
retrieving revision 1.15
diff -u -r1.15 iswctype.c
--- locale/iswctype.c	9 Feb 2005 21:35:46 -0000	1.15
+++ locale/iswctype.c	12 Aug 2008 18:48:58 -0000
@@ -212,7 +212,14 @@
 wcwidth(c)
 	wchar_t c;
 {
-        return (((unsigned)__runetype_w(c) & _CTYPE_SWM) >> _CTYPE_SWS);
+	_RuneType x;
+
+	if (c == L'\0')
+		return (0);
+	x = __runetype_w(c);
+	if (x & _CTYPE_R)
+		return ((int)((x & _CTYPE_SWM) >> _CTYPE_SWS));
+	return (-1);
 }
 
 #undef wctrans
Index: string/wcswidth.c
===================================================================
RCS file: /cvsroot/src/lib/libc/string/wcswidth.c,v
retrieving revision 1.3
diff -u -r1.3 wcswidth.c
--- string/wcswidth.c	9 Feb 2005 21:35:47 -0000	1.3
+++ string/wcswidth.c	12 Aug 2008 18:49:03 -0000
@@ -42,13 +42,15 @@
 	const wchar_t *s;
 	size_t n;
 {
-	int w;
+	int w, x;
 
 	_DIAGASSERT(s != NULL);
 
 	w = 0;
 	while (n && *s) {
-		w += wcwidth(*s);
+		x = wcwidth(*s);
+		if (x > 0)
+			w += x;
 		s++;
 		n--;
 	}

これで逃げるしかねーな。


[ホームへ] [ページトップへ]