レベル1ヘッダ


レベル1ヘッダ
内容 バイト数
基本ヘッダの大きさ 1
基本ヘッダのチェックサム 1
圧縮法の種類 5
スキップサイズ 4
元のファイルサイズ 4
ファイルの最終更新時間 2
ファイルの最終更新日 2
0x20 固定 1
ヘッダのレベル (0x01) 1
ファイル名の長さ (m) 1
ファイル名 m
ファイルの CRC-16 2
書庫を作成した OS の識別子 1
拡張可能部分 n
最初の拡張ヘッダのサイズ 2


 レベル1ヘッダは、LHarcからLHAへの移行期間中に、 LHarcの書庫を対象としていたユーティリティーにも、 ヘッダの内容だけは読めるようにしたヘッダです。

 LHA発表以前のユーティリティーを考慮したため、 レベル0ヘッダの圧縮後のファイルの大きさの部分がスキップサイズに なっています。詳しくは以下で説明します。

 ヘッダはレベル0ヘッダと互換性のある基本ヘッダと、 OS共通に使われる情報とOS独自の情報等を入れるための、 拡張ヘッダに分かれています。

基本ヘッダの大きさ

ヘッダの大きさとチェックサムを除いた、 圧縮法の種類以降の基本ヘッダを対象としたサイズです。

基本ヘッダのチェックサム

基本ヘッダの大きさと基本ヘッダのチェックサムを除いた、 圧縮法の種類からのヘッダを対象とした、チェックサムです。

圧縮法の種類

どの様な圧縮アルゴリズムによって圧縮されたかを記録しています。 例えば、'-lh5-'のように5バイトで表します。 詳しい解説は圧縮法の種類を 参照してください。

スキップサイズ

スキップサイズには、 圧縮後のファイルと全拡張ヘッダを足したサイズが入っています。 すなわち、基本ヘッダを読み込んだ後、 スキップサイズだけファイルを読み飛ばせば、 次のファイルの基本ヘッダの先頭を読み出すことができます。 これは、LHarcを対象とした、ヘッダの情報だけを読み出すタイプの ユーティリティーを考慮して、作られたようです。

a figure of skipsize
図2:スキップサイズ

元のファイルサイズ

圧縮前の、元のファイルサイズです。

ファイルの最終更新時間

ファイルの最終更新時間が記録されています。 形式はMSDOS形式のままで格納されています。

ファイルの最終更新日

ファイルの最終更新日が記録されています。 形式はMSDOS形式のままで格納されています。

0x20固定

レベル0ヘッダでは、ファイルの属性が入っていたのですが、 ファイル属性を表す形式はOSによって異なるので、 拡張ヘッダで表すことになりました。

ヘッダのレベル

ヘッダのレベル値が書かれています。もちろん、 今はレベル1ヘッダを説明しているので、1が入ります。

ファイル名の長さ

ファイル名の長さが入っています。 レベル1ヘッダのサイズの制限により、230バイトまでとなっています。 これより長いファイル名の場合は、長さに0を入れ、 拡張ヘッダでファイル名を表すことになります。

ファイル名

レベル1ヘッダは、基本ヘッダには、ディレクトリ名を 除いたファイル名を入れることになっています。 ディレクトリ名は拡張ヘッダで表します。 もし、ファイル名が長い場合は、このフィールドにファイル名を入れずに、 ファイル名の長さを0にして、拡張ヘッダで表すことになります。

ファイルのCRC-16

変換公式 X16+X15+X2+1で 計算した、ファイルのCRC値が入ります。

書庫を作成したOSの識別子

書庫を作成したOSの識別子が入っています。

拡張可能部分

拡張可能部分は、MSDOS以外のOSがファイル属性等を 入れるために使っている場合があります。 LHa for Unixではこの部分に、ファイル属性とファイル更新日時、 GID/UID属性などを入れていました。

最初の拡張ヘッダのサイズ

最初の拡張ヘッダのサイズが入っています。 サイズが0のときは、拡張ヘッダが無い場合です。

拡張ヘッダ

以下、拡張ヘッダが繰り返されます。 詳細は拡張ヘッダを見てください。


(C)Copyright 1997, t.okamoto.