[Namazu-users-ja 682] Re: mknmzが止まってしまう

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2006年 2月 1日 (水) 21:21:51 JST


寺西です。

HIROSE Yoshihide wrote:
> 
> > うちもダメですが、
> [snip]
> > とすれば、うちでは OK になります。
> > みなさんの環境ではどうなりますか?
> 
> FreeBSD 4.11-STABLE/6-RELEASEともにOKでした。

そうですか。そうすると、

Yukio USUDA wrote:
> 
> 
> IO::File の制限のようにも見えますが、うまくいく環境もあるようですね。

というように IO::File の制限という気がしますね。

末尾にスペースだけじゃなくて、途中にスペースとかでも同様の問題が
生じます。

open を引数1つで呼び出すと、モードとファイル名の区切り等にスペース
を使いますから、ファイル名にスペースを許さないのもわからなくもない
のですが、"\" でエスケープすることも許されていませんね。
# 単純にバグというよりは、セキュリティ上の制限でしょうか。

複数の引数ですと、ファイル名の部分はファイル名以外はありえない
ので、OK ということなのでしょう。
# ???

ファイル名にスペースが入る可能性があるのは、インデックス対象ファイル
(と、もしかするとフィールドファイル)ぐらいです。

このため、この部分だけ efopen をファイル名とモードの2引数で
呼び出し、efopen, fopen も 2引数に対応するのが良いのでしょう。

また、将来的にはすべてファイル名と引数に分けた方が良いだろうし、
パイプや外部コマンドを呼び出している部分は、syscmd 等に置き換える
のが良いかと思います。

ただ、その修正は影響が大きく、デバッグにも時間がかかるだろうから、
今すぐだと、ファイル名にスペースが入る場合は、Win32 同様
一度別名でファイルをコピーして処理するというので良いかもしれません。
-- 
=====================================================================
寺西 忠勝(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-users-ja メーリングリストの案内