/* header.doc (In Japanese) */ LHa for UNIX で使用されるヘッダ構造について Mar. 2, 1992, Masaru Oki. ---------------------------------------------------------------- 本バージョンでは過渡的な措置として3種類のヘッダ形式を用意し、level-1 を既定値としていますが、将来的にはパス名の文字数に制限のない level-2に 統一する方針です。 A. ヘッダの仕様 ----------------------------------------------------------------------------- level-0 level-1 level-2 ----------------------------------------------------------------------------- 1 header size 1 header size 2 total header size 1 header sum 1 header sum 5 method ID 5 method ID 5 method ID 基 4 packed size 4 skip size 4 packed size 4 original size 4 original size 4 original size 本 2 time 2 time 4 time(UNIX type) 2 date 2 date 部 1 attribute 1 0x20 1 RESERVED 1 level 0x00 1 level 0x01 1 level 0x02 分 1 name length 1 name length ? pathname ? filename 2 file crc 2 file crc 2 file crc . ........ 1 OS ID 'U' 1 OS ID 'U' . ........ 2 next-header size 2 next-header size ************************************************************************* 24 + ? 27 + ? 26 ----------------------------------------------------------------------------- 拡 1 ext-type 1 ext-type 張 . ........ . ........ 部 2 next-header size 2 next-header size 分 ----------------------------------------------------------------------------- a. ヘッダの種類 level-0 ヘッダ 従来の LHarc, LArc と同じ形式です。ディレクトリ名の区切りは '\' を標準としています。 level-1 ヘッダ 既定値でこのヘッダが作成されます。-x0 で作成された -lh0- の書庫 は LHarc で解凍可能ですが、解凍時に CRC チェックは行われません。 level-2 ヘッダ 長いファイル名をサポートするためのヘッダです。将来的には本ヘッ ダを標準としたいので、LH 関連のユーティリティを作成される方は今後 準拠してくださるようにお願いします。 b. 凍結・解凍可能な method ID について * は作成可能な method -lh0- * no compression -lh1- * 4k sliding dictionary(max 60 bytes) + dynamic Huffman + fixed encoding of position -lh2- 8k sliding dictionary(max 256 bytes) + dynamic Huffman -lh3- 8k sliding dictionary(max 256 bytes) + static Huffman -lh4- * 4k sliding dictionary(max 256 bytes) + static Huffman + improved encoding of position and trees -lh5- * 8k sliding dictionary(max 256 bytes) + static Huffman + improved encoding of position and trees -lh6- 32k sliding dictionary(max 256 bytes) + static Huffman + improved encoding of position and trees -lh7- 64k sliding dictionary(max 256 bytes) + static Huffman + improved encoding of position and trees -lzs- 2k sliding dictionary(max 17 bytes) -lz4- no compression -lz5- 4k sliding dictionary(max 17 bytes) c. OS ID について 現在のところ、以下の ID を予約しています。 MS-DOS 'M' OS/2 '2' OS9 '9' OS/68K 'K' OS/386 '3' HUMAN 'H' UNIX 'U' CP/M 'C' FLEX 'F' Mac 'm' Runser 'R' B. 拡張部分 a. OS 非依存 (0x00 - 0x3f) common header 1 0x00 2 header crc ( 1 information ) 2 next-header size filename header 1 0x01 ? filename 2 next-header size dirname header 1 0x02 ? dirname 2 next-header size comment header 1 0x3f ? comments 2 next-header size (以上、吉崎氏の lhx.doc より) ---------------------------------------------------------------- LHa for UNIX 拡張ヘッダ仕様 ・依存情報の種類(格納すべき情報) UNIX に依存する情報で記録すべきは以下のものである。 (1) パーミッション (2) GID,UID (3) グループ名、ユーザ名 (4) 最終変更時刻(UNIX time) ・依存情報のタイプ(ext-type) 拡張ヘッダの先頭1バイトには情報が何を示すもの か識別するための値が格納されている。 UNIX依存情報として 0x50 - 0x54 を使用する。 ・依存情報の格納方法 上記 (1) - (4) をそれぞれ別のタイプとする。 (1)パーミッション size 値 1 0x50 2 パーミッション値 2 next-header size (2)GID,UID size 値 1 0x51 2 GID 2 UID 2 next-header size (3)-1 グループ名 1 0x52 ? グループ名文字列 2 next-header size (3)-2 ユーザ名 1 0x53 ? ユーザ名文字列 2 next-header size (4) 最終変更時刻 (for header_level1) 1 0x54 4 UNIX 時間 2 next-header size ・LHa for UNIX ver 1.14 での実装(綿崎) 上記(3)をサポートしていない。 (3)のグループ名、ユーザ名の情報を含む書庫を作成すること はなく、展開時には無視する。 また、(4)はヘッダレベル1の書庫にのみ含まれる。 (3) を作成するようにしてみました。展開と一覧表示のときに (3) の情報があれば ID に優先します。 作成は configure オプション --enable-user-name-header を指定して build したときに有効になります。(2002-06-04 新井) ---------------------------------------------------------------- 以上。 一部改変: 綿崎 修隆 (Nobutaka Watazaki) watazaki@shimadzu.co.jp