Namazu-devel-ja(旧)


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

Re: フィルタのバグ発見



寺西です。

Tadamasa Teranishi wrote:
> 
> gzip, compress 等をしたデータの場合正しく処理できないものを発見
> しました。
> doccat を使ったものや、rtf, ooo などです。

もう少し説明すると、stable-2-0 で
recursive() で 1 を返すフィルタ(gzip.pl, compress.pl など) を
通った後に、File::Copy を使っているフィルタ(doccat を使ったもの、
rtf.pl, ooo.pl 等)を通ると、前フィルタで処理した結果を使うのでは
なく、オリジナルファイルを処理してしまうバグがありました。

これは、copy() でオリジナルファイルをテンポラリにコピーして、
変換処理していたためです。これを、HEAD 同様に前フィルタの処理結果を 
efopen() を使ってテンポラリファイルを作成するように修正しました。

ただし、namazu-devel-ja#3183 に書いているように、recursive() で 1 を
返すフィルタを通った後のデータのファイルタイプを正確に判断する
方法が現在はありません。Magic コードで識別するタイプのものは、
正常に処理できますが、拡張子で判断するタイプのものは全滅(未対応の
形式とみなされる)します。

例えば、rtf.rtf.Z, word98.doc.Z は処理できるようになりましたが、
excel98.xls.Z, taro8.jtd.Z は未対応形式になります。
(しかし、これらの大部分が Windows のファイルであり、gzip, compress で
圧縮することは稀であるので、問題になることはほとんどないでしょう。)

このため、macbinary.pl は当初 recursive() で 1 を返す前処理フィルタ
として実装する予定でしたが、stable-2-0 ではこれをやめています。

これらの問題は、今後 HEAD の方(フィルタの仕様変更を含めて)で対応
したいと考えています。
できれば、アーカイブファイルの中身を検索する仕組みも入れたいと
考えています。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E