Not only is the Internet dead, it's starting to smell really bad.:2007年02月下旬

2007/02/23(Fri)

localedef(1)

TR14652読んでて気付いた点

他にも色々あるんだけど、読めば読むほどmklocale(1)でいいじゃんって気になってきた。

あとSS2/SS3ってどうやって表現するの?も追加。

LS0(SO)		<include> "g0";"g0";
LS1(SI)		<include> "g1";"g0";
LS2		<include> "g2";"g0";
LS3		<include> "g3";"g0";
LS1R		<include> "g1";"g1";
LS2R		<include> "g2";"g1";
LS3R		<include> "g3";"g1";

SS2		<include> "g2";"g0";
SS3		<include> "g3";"g0";
SS2R		<include> "g2";"g1";
SS3R		<include> "g3";"g1";

つまりG[2-3]の場合、Locking-ShiftなのかSingle-Shiftなのか区別がつかないんだよね。
includeされる側の<escseq2022>で指定することもできるっちゃできるけど

LS2		<escseq2022> "g2";"g0";"\x1B\x6E"
SS2		<escseq2022> "g2";"g0";"\x8E"
あるいは
SS2		<escseq2022> "g2";"g0";"\x1B\x4E"

この場合includeされる側のCHARMAPにLS2とSS2の<escseq2022>を同時に定義できないことになってしまうがな。
ここで指定するバイト列は中間バッファへの指示用のエスケープだから駄目だわ、こりゃ。

2007/02/26(Mon)

Thinkpad

バッテリ買ったばっかなのにs30のマザー死亡、アヒャヒャヒャ。
去年の6月末に新品と交換して半年ちょっとしか持たないとわね、予定外。
どないすべ。

CNS11643

8面を使ってUnicodeのBMPと完全互換するようにしてたのね。
http://www.cns11643.gov.tw/web/seek_09.jsp?range=1
そのうち(いつだろうね)対応するか。

2007/02/27(Tue)

NetBSD

多分はてな経由で 不正なUTF-8文字列の話。
要するに RFC3629の10. Security Considerationsの話ですな。

嫌な予感がしたのでNetBSD iconvでちゃんとEILSEQを返すかのテスト。

○ GNU libiconv-1.10
○ glibc-2.5 iconv
○ Solaris8 iconv
× NetBSD 4.99.12 iconv

古い実装だしな、直すか。

同様にサロゲート"\xed\xa0\80"(0xd800)~"\xed\xbf\xbf(0xdfff)がEILSEQになるかのテスト。

× GNU libiconv-1.10
× glibc-2.5 iconv
○ Solaris8 iconv
× NetBSD 4.99.12 iconv

ふーん。

つーわけでNetBSD用のpatch。
patch-citrus_utf8.c
patch-unicode.h
もうちょいテストしてcommitするべし。

まあ ISO-IR-165で書いたように、変換前にチェックをすることこそが危険なんだけどね。
他にも(昨日書いたけど)CNS11643の8面に basic latinがあったりするし。

ちょと話はズレるけど

エスケープ漏れといえば、某商用O-R mapping実装がIBM DB2のSQL方言(LIKEに全角_%が使える)に
対応してなくて(以下略)というのがあったなそういや、多分まだ直ってないんだろうな。