2007年4月14日

[Namazu-devel-ja 1559] Re: OLE-Storage の判定に File::MMagic::addContainerHook を利用

寺西です。

Yukio USUDA wrote:
>
> Name というブロックで Visio, 一太郎も判別できるのであれば
> SummaryInformation よりよい情報ですね
> mknmz で使う場合は olemtype.pl の Item() を利用しま
> しょう。


1点気にしているのは。
複合ドキュメント(Word に Excel を貼り付けてる)の場合は、どうなるのか
きちんと確認していませんから、Tree 構造を解析して親ブロックから情報を
取り出すとかしないといけないのかもしれません。

> こちらは誤判定が減ると考えて File::MMagic を修正させていた
> だくことに
> しようかと思います。

そうですね。

> > それで、何かの変数をセットすると従来と互換性のある結果を返すよ
> > うに
> > でもなっていれば、良いのではないでしょうか?
...
> こちらはどこまで互換性を考えるかというところですね。

File::MMagic を Namazu 以外で使われる方のために互換性に関する救済策
は必要ではないかなと思います。

> mknmz で OLE-Storage 系ファイルを処理する場合は
> OLE-Storage_Lite が必須になるということでよいのか、
> 最低限必要なサブルーチンのみ持ってくるのがよいのか
> どうしましょうか。

OLE-Storage_Lite のインストールを推奨して、OLE-Storage_Lite が使える
場合は、addContainerHook() を使う。
OLE-Storage_Lite が使えない場合は従来と同じ動作にする。

というのが、互換性を考えた実装かと思います。
(Windows バイナリには OLE-Storage_Lite を PPM の必須に格上げして
inst.bat でインストールするようにすることは容易なので、特に問題ない
のですが。)

もちろん、2.2.X 系はOLE-Storage_Lite必須でも良いでしょう。

...と書いてて、ふと

> File::MMagic の pod に olemtype.pl を
> addContainerHook() で
> 使った例を記述しておくというのでどうでしょうか。

OLE_Storage_Lite があれば、File::MMagic::xxxx() でモードが切替え
られるとかが良いかなぁ。

xxxx(mtype, mode)

mtype ... 動作モードを変える大分類のメディアタイプを指定する。
      undef ... モード変更が可能な全てのメディアタイプのモード
を変更

mode 0 ... 従来互換 (大分類/小分類の区別なしのフラットなもの)
      デフォルト
mode 1 ... ms-ole-object を返す。(大分類)
mode 2 ... ms-ole-object のサブ分類を行い、更に詳しいメディアタイプを
返す。(小分類)

そうすると、zip 系のとかにも応用が効きそう。

Namazu では mode 2 を使うことにして、使えない場合は mode 0 で動くと
いうことにする。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2007年4月14日 08:24
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/56937
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。