[Namazu-win32-users-ja 929] Re: namazu.exe で「ディスクがありません」というダイアログが表示されることがある

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2007年 3月 6日 (火) 18:18:43 JST


寺西です。

Kazuyoshi Kakihara wrote:
> 
> 身近な関係者の情報共有で事足りると思い個人のブログに記載
> していた内容ですが、MLでの報告もしたほうがよいとの示唆を
> 受けましたのであらためてここに報告させていただきます。

ありがとうございます。

> 概要:
> コマンドラインからnamazu.exeで何か文字列を検索しようとす
> ると「ドライブにディスクがありません。ディスクをドライブ
> に挿入してください」というダイアログが表示されることがあ
> ります。
> この現象は Namazu 2.0.16 のWindows用バイナリで確認されて
> いるもので、2.0.17RC5 for Windows では見つかっておりませ
> ん。

おそらく Vista 対応版の 2.0.16.003-win32 アーカイブに含まれる
2.0.16 のバイナリでは発生しないのではないかと思います。

> 環境:
> Windows XP Professional/Homeで確認しました。
> パソコンにマルチカードリーダ等が接続されていてGドライブ
> が論理的に存在し、かつそのGドライブにディスクが入ってい
> ない場合に上記の現象が発生します。

おそらく G: にリムーバブルメディアを割り当てて、メディアを挿入して
いない環境で発生するのであろうと思います。

また、G: を割り当てていない環境や、G: にHDDやネットワークドライブの
ようなリムーバブルでないメディアを設定した場合には起こらないもの
と思います。

これは G: にアクセスした場合に、OS がメディアが挿入されていないため、
「ドライブにディスクがありません。ディスクをドライブ 
に挿入してください」というダイアログを表示したのでしょう。

では何故、G: なのかということですが、ここで、G: については思い当たる
ことがあります。

> 自力での分析:
> ソースコードを参照しながら動作を確認していったところ、メ
> ッセージ表示のためのLOCALE情報を取得しに行く前後でこのダ
> イアログが表示されていることがわかりました。

ということで、LOCALE関係に問題があるということですね。

> 当たらないためソースからのアプローチはあきらめ、バイナリ
> エディタでnamazu.exeを開いたところ、2箇所ほど「g:/mingw/share/locale
> 」という文字列が埋め込まれていることが分かりました。

なるほど、g:/mingw/share/locale ですか。

どうやら、GNU gettext の intl ライブラリにパスが埋め込まれている
のが原因のようです。

> 繰り返しになりますが、ソース自体にはこのような文字列は埋
> め込まれておりませんので、これはnamazu.exeをコンパイルす
> る際の環境やコンパイルオプションに起因するものと思われま
> す(厳密に調査したわけではありませんが)。

GNU gettext をコンパイルした環境では、MinGw が G: にインストール
していたので、このパスが埋め込まれたのでしょう。

Vista 対応の VC6版の Namazu では、GNU gettext を VC6 でコンパイルした
ものを使っていまして、C:/usr/share/locale というパスが埋め込まれて
いるものと思います。

C: がリムーバブルメディアの場合は同様に問題を起こすわけですが、
NEC 9821シリーズでもなければ、C: は通常HDDなので実質問題になる
ことはないだろうと思います。

# ディスクレスWindowsとかあったっけかな???

まぁ、D: 等を起動ディスクにして、C: にリムーバブルメディアを割り当て
るってことは Windows としてはできるだろうけれども、C:\namazu に
Namazu をインストールして下さいとなっているので、これも特に問題は
ないでしょう。

CD-ROM/DVD-ROM に namazu.exe を入れてCD/DVD検索システムを作った
場合には若干問題が起こるかもしれませんけど...。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-win32-users-ja メーリングリストの案内