mount_smbfs -E の失敗した理由 ― 2006年08月14日 14時03分53秒
一つ目は -E で指定するのには utf-8 ではなく、 UTF-8 でなければいけないらしい。いむらさんによると、UTF-8 などの一部のエンコードでは大文字で記さなければいけない。具体的に言うと、/usr/src/sys/libkern/iconv_ucs.c に以下のように定義されている物に関してだ。
static struct {
const char *name;
int from_flag, to_flag;
} unicode_family[] = {
{ "UTF-8", KICONV_UCS_FROM_UTF8, KICONV_UCS_TO_UTF8 },
{ "UCS-2LE", KICONV_UCS_FROM_LE, KICONV_UCS_TO_LE },
{ "UTF-16BE", KICONV_UCS_FROM_UTF16, KICONV_UCS_TO_UTF16 },
{ "UTF-16LE", KICONV_UCS_FROM_UTF16|KICONV_UCS_FROM_LE,
KICONV_UCS_TO_UTF16|KICONV_UCS_TO_LE },
{ NULL, 0, 0 }
};
これらのエンコーディングに適合するものを探しているときに、洩れてしまうらしい。何らかの対策を取る予定だそうだ。
もう一つの問題は、インクルードファイルの不整合だったようだ。/usr/src/sys/sys 以下のファイルが使われるべきだったが、/usr/include 以下を参照していた可能性があるとの事だった。
kiconv で変更される物は以下の通りである。いむらさんから教えて頂いたものを抜粋する。
パッチの適用と同期をとって再作成する必要があるのは 以下でしょう。(全パッチを適用した場合) ・libkiconv.so ・mount_* ・kernel (静的に組み込んでいる場合) ・libikonv.ko (動的に組み込んでいる場合) ・libmchain.ko (動的に組み込んでいる場合) ・各ファイルシステムの *.ko (同じく動的に組み込んでいる場合)
最近のコメント