* KH-SARC -(by [[K]], 2015.01.26) ** これはなに? -複数のファイルやディレクトリ構造などを簡単に格納するための共通フォーマット -Sはsimple, ARCはarchive ** シグネチャ -KHSARC(6バイト) --KH系のファイルフォーマットは6文字シグネチャをベースとする。 --KH系のファイルフォーマットはKHB系のファイルフォーマットとは異なり、バイト単位で設計されている。 ** ヘッダ -シグネチャの後に、タグヘッダが後続する。KH系のファイルフォーマットはこの点についてどれも似たような構成を取る。 --00: NOPタグ。 --01: リマークタグ。スキップしたいバイト数が後続する。 --02: フラグ ---bit0: ファイルの更新日時を格納する(年月日時分秒) ---bit1: ファイルの作成日時を格納する(年月日時分秒) ---bit2: ファイルのフラグを格納する ---bit3: ファイルのアクセス権を格納する ---bit4: ファイルID的なものを格納する ---bit5: ファイル名を格納しない ---bit6: CRC32を格納しない --03: ヘッダ終端マークタグ --01-0fのタグは、基本的にパラメータが一つしかないので、理解できないタグがあってもスキップできる。 -ファイル名はデフォルトではUTF-8エンコードとする。 ** 数値エンコード -[[KH-dhc8>KH-dha8]]を採用。 -[[KH-dhc8>KH_dha8]]を採用。 ** アクセス権のためのユーザIDやグループIDの定義 -00: NOP -01: リマークタグ。スキップしたいバイト数が後続する。 -03: 終端 -04: ユーザ定義 --ID番号の後に、文字列長+文字列。 -05: グループ定義 --ID番号の後に、文字列長+文字列。 ** データ本体 -00: NOP -01: リマークタグ。スキップしたいバイト数が後続する。 -02: 通常形式 --ファイル名長さ --ファイル名本体 --ファイルID --ファイルフラグ --ファイルアクセス権 --ファイル更新日時 --ファイル作成日時 --CRC-32 --データ長 --データ本体 -03: 本体終端 -04: ディレクトリ --ファイル名長さ --ファイル名本体 --ファイルID --ファイルフラグ --ファイルアクセス権 --ファイル更新日時 --ファイル作成日時 -05: ディレクトリ終端 ---- -02タグのフラグ: --bit0: readonlyフラグ。 --bit1: 隠しファイル属性。 --bit2: ポインタ形式(データ長の後に本体がなく、代わりにファイル先頭からのオフセットが記述される) ---- -ファイルのアクセス権を設定した場合は、ユーザIDやグループIDなども必要になるが、それはまた後日考える。 ** 使いどころ -tarの代わりにする。ポインタ形式があるので、内容が同一のファイルが複数ある場合、それは重複して記録しないで済む。 -OSECPU-VMなどのライブラリファイル形式に採用することもありうる。 -KH-FDPLの環境セーブデータフォーマットとしても使えるかもしれない。 * こめんと欄 #comment