namazu-dev(ring)


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

Re: moving OLE filters



<200002221636.BAA11578@xxxxxxxxxxxxxx>の記事において
kenzo-@xxxxxxxxxxさんは書きました。

>> >oleexcel.pl, olemsword.pl, olepowerpoint.pl は filter/win32 
>> >の下に移動してそれぞれ、 excel.pl, msword.pl, powerpoint.pl 
>> >というファイル名にしてはいかがでしょう? その方がファイル名が
>> >すっきりしますし、mknmz での処理もやりやすくなります。
>> 
>> そうですね。判りました。

  できれば、configure 時に Win32 環境でないことが判明したら、
filter/win32 以下のファイルをインストールしないようにしてもらえると嬉
しいです。

>> で、namazu-ml で動かないと言いましたが、olemsword だけは動くはずでした。。
>> しかしうまく行かないのでちょっと追ってみたのですが、どうも File-MMagic で
>> 追加 test がうまくいっていないみたいなのです。
>> 
>> 0	string		\320\317\021\340\241\261\032\341
>> >48	byte		0x1B		application/excel       <--
>> >64 byte		0x00		application/powerpoint  <--
>> >64 byte		0x01		application/msword      <--この辺の判断

  今までの File::MMagic は、> で始まる subtest な entry での処理はコメ
ントアウトしてありました。実装上ちょっと面倒だったので、後回しにしたま
まずっと忘れさられていました ^^;
  先程、ad-hoc ぎみながらとりあえず動作するよう修正したのですが、まだ
ちょっと問題があります。具体的には、subtest entry に複数マッチしてしま
うとそれら全てを返してしまうのです。

# file コマンドもそういった挙動をするはず。

  このため、広瀬さんにいただいたテスト用データの excel だと

application/excelapplication/powerpoint

  といった感じの出力がされてしまいます。

  さて、どうしましょうか... 私がすぐに思いつく方法は以下の通りです。

1. 最初に match した subtest の entry のみを返すよう修正
2. 最後に match した subtest のみを返すよう修正
3. code はそのままで、entry の文字列を変更するとで対処

  3. は、以下のような entry を作成すれば良いでしょう。

0	string		\320\317\021\340\241\261\032\341 application/x-office
>48	byte		0x1B		; x-subtype=excel
>64 byte		0x00		; x-subtype=powerpoint
>64 byte		0x01		; x-subtype=word

  それから、修正した File::MMagic でチェックしたテストデータの結果を以
下に付けておきます。

$ mmfile.pl excel/*
application/excelapplication/powerpoint
application/excelapplication/powerpoint
$ mmfile.pl powerpoint/*
application/msword
application/msword
$ mmfile.pl word8/*
application/msword
application/msword
$ mmfile.pl jbw/*
application/octet-stream
application/octet-stream
application/octet-stream

# entry そのものが正しいかどうかまではまだ調べていません... ちょっと時
# 間を下さい。
## 会社の回線工事を控えて忙しいので...
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)