iconv の下調べ2006年07月21日 10時28分11秒

man 3 iconv が一番の情報元だろうか。そこに、iconv_open と iconv_close が出てくる。利用例は、iconv で文字コード変換にある。

FreeBSD 6.1 では which iconv で /usr/local/bin/iconv が出てくる。iconv は ports から入ってきたらしい。実は、現在の kiconv の実装は掴みきれていない。

tech-jp に 2003 年 7 月に投げられたメールによると、kiconv はユーザスペースから変換表は取ってくるとある。引用する。

iconv のしくみについて、簡単に説明しておきます。 カーネル内に保持しているのは、変換エンジンのみで、 変換エンジンが使用する文字コード変換表は、sysctl によって ユーザランドからカーネルの世界に copyin(9) するイメージとなります。 個々の変換エンジンは(現状は xlat のみ)、KOBJ に乗っかっており、 追加や入れ替えが簡単にできるようになっています。 今回の 16bit 拡張は、単純に xlat16 というコンバータを 追加しただけという形です。
copyin と言うシステムコールがあったらしい。

そこからのリンクの既存の日本語文字コードと Unicode の間のマッピングルールもよくまとまっている。

copyin をソースの中を探してみたところ、ここにあった。


% cd /usr/src/sys/netsmb
% grep copyin *
smb_smb.c:               * Errors can happen on the copyin, the rpc, etc.  So they
smb_subr.c:             if (copyin(p, &bt, 1))
smb_subr.c:     error = copyin(s, p, len);
smb_subr.c:     if (copyin(umem, p, len) == 0)

ここらあたりから見ていけばいいかな。

前回次回