.0.2 を公開した 。 libusb + GNU make 対応して、VineLinux でコンパイルできることを確認。 あとついでに、FreeBSD でもコンパイルできることを確認。 NetBSD / FreeBSD は、デフォルトでは libusb を使わないんだけど、 gmake でコンパイルすれば使うようになる。でもメリットないよ。 |
.NetBSD に iconv 入れたんだし、ということで idnkit をコンパイルしてみる。 あっさり動いたつまらん。 .runidn が動いてないような気がするのは、stub が足りてないのかね。 runidn dig してみると EUC-JP がそのまま渡されてるっぽい。 |
.うーん 、 たぶん n > 0 になってるんでしょうけど、 なんでそれを assert でチェックしてるのか今ひとつ理解できません。 .iconv() の仕様として、 変換できなかった文字があるとその文字数を返すので、 「変換できない文字があったらそれは mutt のバグだ」 とその assertion は主張しているということになると思うのです。 で、「変換できない文字がない」 というのを確かめるには必ず一回変換をしてみないとわからないはずなのです。 .多分 !n を取ってしまって平気なような気もするんですが……。 .このケースで、mutt の作者が意図していると推測できることは、
.もし、機種依存文字が入っているメールを転送しようとして この assertion に引っかかっているのならば、 それは dirty な入力ファイルをエラー処理ではなくて assert で チェックしてしまっている mutt の仕様バグだと思いますですはい。 でももしかしたら、mutt の作者は 「そういうのは入力シーケンスとして invalid だから、 iconv() は -1 と EILSEQ を返すべき」という解釈なのかもしれないので、 ちょっと考えないとだめかもしれません。 .mutt に関しては、 件の pr の件で「いいテストプログラムだよね」と wiz からも言われてるので、 コンパイルして再現環境作ってみますかねぇ。 .なお、「0x1B 0x24 0x42 0x7E 0x7E」という ISO-2022-JP な文字列を UTF-8 に変換したときの挙動の違い: Citrus iconv はこの文字を non-identical conversion として扱ってるけど、 Solaris は外字として扱ってて、 GNU iconv は illegal sequence として扱ってる。 SUSv3 的には、 If a sequence of input bytes does not form a valid character in the specified codeset, conversion shall stop after the previous successfully converted character.なので、EILSEQ にしないといかんのかなぁ。 localdef の charmap と同様のものを導入して、 これを見るようにすればできるんだけど。 別の方法としては、 csmapper レベルで invalid conversion と invalid input を区別するのかな。 |
.温泉行くというので車待ち。 .あまりに暇なので虹裏。 ローレベルフォーマットってなんだよ> CANDY TOYS |
.ircd 。 同意見多数だと思いますが、 本家本元の irc サーバプログラムと 同じ名前なわけで、いかがなものかと……。 |
.「GNU libiconv を入れてくれ」と吐く configure.in を書くなよ。 そのうち「Linux を入れてくれ」と吐く configure.in が出てきたらどうしよう。 .アプリケーションのほうを直せ、と言いたいところではあるのだが、 面倒くさいので alias を足すことにした。 UCS-4 というのはエンコーディングの名前として気持ち悪いんだけど、 ISO-10646-1 というエンコーディング名よりは UCS-4BE の方が 若干まともなのでこいつを alias に足す。 .夜はこがさんと六本木の聖地に行く予定。今日はフージョンじゃないけど。 |
.iconv そのものの根本的な問題として、 「UTF-8 → CTEXT の時にどの言語が優先されるべきか問題」 が発生するような気がする。 ."UTF-8" とか "CTEXT" という名前自体は language neutral であるべきなので、 "UTF-8@ja" とか "CTEXT@ja" とかそういう名前はちょっとダサい気はするが、 まあ iconv のインターフェースでやるのならばそういうことになるとは思う。 でも、今の Citrus iconv の実装で "UTF-8@ja" → "CTEXT" とかされると困るのよね。"UTF-8" → "CTEXT@ja" ならいいんだけど。 この辺は BoF の時に TODO に挙げた気がする。 .本当は、変換の属性として別の引数として与えられるべきなんだと思うけど、 ただでさえ 2 乗の組み合わせが発生する iconv で、 さらにもう一個自由パラメータが増えるのはちょっとつらい。 |