Namazu-win32-users-ja(旧)


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

Re: 拡張子だけで判断するフィルタが呼び出されない



寺西です。

koi_san wrote:
> 
> 新版を待ちつつ、カスタマイズが終わらないkoi_sanです。
> 今回は、mknmz::load_documentの問題です。
> 
> gzip-compressed SVGファイル(拡張子'.svgz')のフィルタを作ったところ、呼
> び出されませんでした。
> 
> // 対象ファイル: E:/DOCUME~1/koi_san/route1.svgz
> // decide_type: name: image/svg+xml, cont: application/x-gzip
> // 検出されたタイプ: application/x-gzip

そのフィルタの中身を提示してください。
そのフィルタの内部で gzip 展開を行うつもりであるなら、
gzip 形式であることから、gzip ファイルと認識され、作成されたフィルタ
を呼び出せていません。

また、gzip 展開を gzip フィルタに任せる作りのフィルタであるのならば、
多段フィルタの以下の問題にひっかかります。

> 調べてみると、以下のようになっていて展開後は拡張子だけで判断するフィル
> タは呼ばれないことになっています。

はい。既知の問題です。
多段フィルタの場合、下流のフィルタで認識できるのは、マジックコードで
認識できるものに限られます。
これは、フィルタの上流から下流まで元のファイル名のまま流れるから
です。中身が変わるにもかかわらず拡張子はそのままですので、
最上流以外では拡張子でメディアタイプを識別することはできません。
(* 厳密には必ずしもそうということではないのですが...。)

言い換えれば、拡張子でメディアタイプを識別するのなら、それは
単体フィルタとして動く必要があるということです。(今のところ)

この他にもいろいろと問題があるので、多段フィルタ周りは、開発版で
その仕組みが見直されつつあります。
下流フィルタに流す際にファイル名、拡張子を差し替える等もできますが、
まだ、その辺りは整備されていません。

なお、zip 形式のファイルを採用している OpenOffice 用のフィルタである
ooo.pl が今回のフィルタを作る上で参考になるのではないかと思います。
-- 
=====================================================================
寺西 忠勝(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