[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:75945] Re: glibc-2.2 (Re: kudzuで文字化け)


松村@Infoweb と申します。

あんまり自信ないですが...

> > > kudzu とは関係無いのですが、LANG が日本語(ex. ja_JP.EUC, ja_JP.SJIS)
> > > になっていると、????? のような文字列を出すコマンド(ex. make, fdisk)
> > > があるようです。glibc は glibc-2.1.94-3 を入れているのですが、これが
> > > 原因でしょうか?
> > 
> > glibc が古いことが原因だと思います。
> > 先ほどリリースされた glibc-2.2 でこのバグは既に fix されています。
> 
> コマンドによってエラーが「??????」となる件ですが、本当に2.2でfixされたの
> でしょうか? いま2.2のインストールが終ったとこですが、改善された様子はあり
> ません。

glibc-2.2 で修正されたバグは、国際化されていない(setlocale()を呼
ばない)プログラムでは perror() などで返されるメッセージは C
locale のものであるべきなのに、LANG に対応するメッセージが返され
てしまうというものです。

この修正で less などの国際化されていないアプリケーションでエラー
メッセージが ???? になる現象は改善されました。

> 私の環境(Slackware)では、find, gcc, ldなどが「??????」となります。

手元にあった egcs-20001023.tar.gz を確認したところ、gcc は
gettext を使用してメッセージを国際化対応できるようになっています。

gettext を使用する場合、必ず setlocale() を呼ぶ必要があるのですが、
gcc では setlocale() の使用法に問題があるようです。

# setlocale(LC_ALL, "") にすべきところを setlocale(LC_MESSAGES, "")
# としている?

ようするに glibc ではなくアプリケーション側のバグのようです。

誤りがありましたらご指摘ください > 詳しい方

ちなみに私の環境では find は問題ありませんでした。

prompt> find --version
GNU find version 4.1

--
松村 博光  e-mail:   coji2 _at_ mb.infoweb.ne.jp        (自宅1)
                  fwny7470 _at_ mb.infoweb.ne.jp        (自宅2)
                  matumura _at_ tyche.dricas.com        (自宅3)

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: