Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [namazu-users-ja] Re: solaris の strcasecmp 問題



笠原です。

* From: masao@xxxxxxxxxx (Masao Takaku)
* Date: Wed, 21 Jun 2000 20:19:08 +0900 (JST)

> > オプションで指定するのではなく、機種に関わらず強制的に namazu の
> > 配布パッケージ内の strcasecmp.c を利用するように修正するべきなのでは
> > ないでしょうか? (こちらが日本語対応であるなら)
> > Solaris 以外でも問題になる可能性は否定できないと思います。

> ご指摘のとおり、とりあえず修正してみました。
> CVSの最新版で動作確認をお願いします。

すみません。以前に ML で話題になったときのことは知らないので外し
ているかも知れませんが、話が噛み合ってなくないですか?


もとの寺西さんの発言:
| trcasecmpの実装の問題ではなく、そもそも日本語文字列に対応して
| いない関数を使っている側の問題だったのでは?

ということで、寺西さんは strcasecmp() の実装の問題ではない、とい
うことをおっしゃっているのですよね。

けれども、高久さんが添付されたパッチを拝見すると、新たに
nmz_strcasecmp() という関数を実装して、strcasecmp() を呼んでいる
ところを全て nmz_strcasecmp() を呼ぶように変えています。どうも、
strcasecmp() を問題視した上での修正にしか見えません。

また、パッチの nmz_strcasecmp() は特に日本語向けの処理を行ってい
る様子はないように見えます。(日本語対応って、「A」と「a」を同じ
と認識してくれる strcasemp() ってことなのかな?)

いずれにしても、ソースコード内で nmz_strcasecmp() を使って比較し
ている文字列は、いずれも日本語の文字列ではないように見受けられま
すので、別に strcasecmp() が日本語対応である必要はないように思え
ます。

それから、パッチ内の nmz_strcasecmp() ですが、char が符合有りの
環境で MSB が立っている文字を含んだ文字列を比較させると、大小が
逆転してしまうような気がします。ちなみに lib/strcasecmp.c では

|  const unsigned char *p1 = (const unsigned char *) s1;
|  const unsigned char *p2 = (const unsigned char *) s2;

としているので、この問題は起きません。

# とは言え namazu で strcasecmp() を使っている箇所はどれも、文字
# 列が一致しているかどうかしか見ないので、いまのところ実害はない
# と思います。けど、後で使い回すことも考えた方がいいですよね。

そもそも、lib/strcasecmp.c をそのまま使えば良いんですよね?  なぜ
もう一つ別の実装が要るのでしょうか。
________________________________________________________________
                                    笠原 基之(かさはら もとゆき)