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

Kazuyoshi Kakihara kazuyoshikakihara @ yahoo.co.jp
2007年 3月 4日 (日) 23:29:57 JST


柿原と申します。

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

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

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

再現手順:
パソコンやマルチカードリーダを取り替えて何台かでテストし
たのですが、手元の典型的な事例だけを報告します。
・パソコンに空のマルチカードリーダを接続します(これで、F
、G、H、Iドライブが使用可能になります)
・SDカードをカードリーダに挿入します(手元のパソコンでは
、これがFドライブとして認識されます。この時点でGドライブ
は空です。現象の再現にこの手順が必要なのは、たまたま手元
にあるマルチカードリーダの特性かも知れません)。
・namazu.exeをコマンドラインから実行します。
これで、検索結果が表示される直前に毎回上記のダイアログが
表示されるようになります。

自力での分析:
ソースコードを参照しながら動作を確認していったところ、メ
ッセージ表示のためのLOCALE情報を取得しに行く前後でこのダ
イアログが表示されていることがわかりました。
が、ソース自体にはこのダイアログに関連するような部分が見
当たらないためソースからのアプローチはあきらめ、バイナリ
エディタでnamazu.exeを開いたところ、2箇所ほど「g:/mingw/share/locale
」という文字列が埋め込まれていることが分かりました。
この部分を「c:/〜」と書き換えてやると、とりあえず問題の
ダイアログは表示されなくなりました。この場合、c:/mingw/share/locale
というフォルダを作成する必要はありませんでした。
繰り返しになりますが、ソース自体にはこのような文字列は埋
め込まれておりませんので、これはnamazu.exeをコンパイルす
る際の環境やコンパイルオプションに起因するものと思われま
す(厳密に調査したわけではありませんが)。
現在皆様で検証中の2.0.17RC5においては、VC++6.0でコンパイ
ルされているからでしょうか、このような文字列は埋め込まれ
ておりませんし、同じ環境でテストしても問題のダイアログが
表示されることはありませんでした。

以上、手遅れかもしれませんが、とりあえずご報告させていた
だきます。


--------------------------------------
Start Yahoo! Auction now! Check out the cool campaign
http://pr.mail.yahoo.co.jp/auction/




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