Misc Change Log

`OpenBSD で scheme のアプリ開発' みたいなことをやってます。

2005-07-31

ogginfo が日本語タイトルで常に ### に化ける

mp3, vorbis プレイヤーとして、gqmpeg を愛用しているのだが、 vorbis でエンコードしたファイルの曲名がいつも '#' で埋められているのでおかしいなあ、と。

gqmpeg のソースを読んでみると、 ogginfo の出力をパイプで読んでいるだけのようだ。 そこで、

$ ogginfo foo.ogg

とすると、タイトルが '#' で埋められている。

で、vorbis ファイルを直接読んでみると、 やっぱり '#' で埋められてる。

vorbis のファイルは abcde エンコードしており、こいつは内部で oggenc を使っているので、 結局のところ vorbis-tools のロケールまわりに問題があるらしい。

ざっとコードを見るに、 文字コードの変換は share/utf8.c で行っているんだけど、 config.h をインクルードしてないのが原因だった。 share/iconvert.c も同じく。

というわけで、以下のファイルを ports/audio/vorbis-tools/patches 以下に投入。

patch-share_iconvert_c and patch-share_utf8_c

Citrus なしの OpenBSD の場合、環境変数 CHARSET を設定すべし(EUC-JP とか)。 Citrus 環境下では nl_langinfo(CODESET); されるのでロケールから自動設定される。

というわけで解決。

てか、config.h が無かったら、 utf8.c も iconvert.c も何もしないコードしか出力されないんだけど。 誰もテストしてないのかよ!なんだかなあ。

ところで、FreeBSDNetBSD も対策をしてないようなので、 このパッチは有効みたい。未確認。

Posted at 18:36 | Permalink | Category | Comments