2007年07月15日

RAR内の大きなファイルを分割して解凍するツール ver.1.01 公開

RAR内の大きなファイルを分割して解凍するツール ver.1.01 のダウンロード

ソースコードのダウンロード

RARアーカイブの中のファイルを分割して展開する「RAR内の大きなファイルを分割して解凍するツール」の修正版です。

変更点:
・.RAR アーカイブのコメントを表示する機能を追加。
・欠陥の修正
・細かい修正

見られるコメントは RAR 本体のコメントのみで、ファイル個々のコメントには対応していません。

前のバージョンと、多少詳しい説明はこちら

例によってたわごと。
posted by 七癖 at 14:39| Comment(0) | TrackBack(0) | 自作フリーウェア | このブログの読者になる | 更新情報をチェックする

Lethal Application 2000万点突破

大雪戦の同人ゲーム「Lethal Application」の Ultimate モードで 2000 万点を突破しました。
やったー!
・・・いや、うれしかったもので、つい・・・。
知っている人がここに来るとは思えないけれど。

リプレイファイル
LApp_50_info.lzh
posted by 七癖 at 14:22| Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2007年07月01日

ISO9660 と Joliet の情報交換の水準

ISO9660 と Joliet の制限をまとめておきます。

ISO9660 の PVD から辿るファイルとディレクトリには、以下の水準に分けられた制限があります。

水準123
ファイル名+拡張子[BYTE]8+33030
ディレクトリ名[BYTE]83131
ファイル分割不可不可
ディレクトリ階層888
フルパス名[BYTE]255255255


Joliet の SVD から辿るファイルとディレクトリには、次の制限があります。

水準123
ファイル名〜拡張子[BYTE]128128128
ディレクトリ名[BYTE]128128128
ファイル分割不可不可
ディレクトリ階層制限なし制限なし制限なし
フルパス名[BYTE]240240240


ISO9660:1999 の(一般的な) EVD から辿るファイルとディレクトリには、次の制限があります。

水準123
ファイル識別子[BYTE]207207207
ディレクトリ識別子[BYTE]207207207
ファイル分割不可不可
ディレクトリ階層制限なし制限なし制限なし
フルパス名[BYTE]制限なし制限なし制限なし


Joliet の フルパスの最大長さが 240 バイトというのは少なすぎると思うのですが、訳し間違えているでしょうか。

posted by 七癖 at 11:16| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月29日

Joliet その4 複セッションのディスク

音楽とデータを別個のトラックに置いて一枚にまとめられる CD では、特有のややこしい問題があります。

まず、先頭の位置は最初のセッションの 00:02:00 とします。経過時間(分秒フレーム)と論理アドレスの変換式はは、
(((Minute*60)+Seconds)*75) - 150
です。

そして Joliet では、セクタフォーマットに Mode 1 か Mode 2 Form 1 のどちらかを使います。
Mode 1 は単一セッションの場合のみ使用します。
この Mode 1 と Mode 2 Form 1 のユーザーデータの容量は1セクタあたり 2048バイトなので、00:02:00 からの論理アドレスを論理ブロック番号として、SVD の パステーブルの先頭位置やディレクトリレコードのディレクトリ/ファイルの先頭位置に記録します。

ボリューム記述子群は、そのデータトラックの 16 セクタ目より始まります。

これらのことは、Joliet に限らず ISO9660 (の PVD) のみのディスクでも、こうなっているようです。

なお、DVD では、ユーザーデータ領域の開始位置から数えます。ユーザーデータの容量は1セクタ当たり2048 バイトです。
posted by 七癖 at 09:49| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月27日

Joliet その3 疑問

Joliet の仕様を訳してみて、疑問に思ったことを並べてみます。

1.SVD:Volume Descriptor Version の設定
大抵 Joliet 形式の CD-ROM では、SVD の Volume Descriptor Version は 1 になっています。ですが Joliet は SVD よりむしろ EVD 寄りのため、Volume Descriptor Version には 2 を設定したほうがいいのかもしれません。しかし、これは Joliet の後 ISO9660:1999 になってから作られた仕様です。Windows95 や 98 を使っている人のことを考えると、1 のままのほうが良いかもしれません。

2.ソート
パステーブルレコードやディレクトリレコードを並び替える際、ファイル名の長さの違いをどうするかという問題があります。ISO9660 では短い方を長い方に合わせる為、適当な1バイトデータを足りない分だけ後ろに追加することになっています。ISO9660 の PVD では、0x20 (半角スペース) を使います。Joliet の SVD では、0x00 を使います。
…まあ d 文字 と a 文字 を使う場合に限れば 0x20 でも 0x00 でもソートの結果は同じでしょう。VisualC++6.0に組み込まれた文字列の比較関数では、先頭の文字から順番に比較し、「abc」「abcde」の場合は短い「abc」を小さいとしますが、これも上のやり方と結果は同じでしょう。

3.FILLER (Justification of characters)
SVD には、Volume Identifier などの固定長文字列において、使わない場合や余った場所をどう設定するかという問題があります。ISO9660 の PVD では、0x20 (半角スペース) を使います。ですが、Joliet では特に書かれていません。なので CD-ROM の作成者によってまちまちです。
・ソートと同様に 0x00 を使う。
・半角スペースを UCS-2 に直した 0x00,0x20 を使う。この場合、37バイトと奇数の Copyright File Identifier、Abstract File Identifier、Bibliographic File Identifier の最後のバイトは 0x00 にする。
・ISO9660 の PVD に倣い、全て 0x20 で埋める。
などです。
posted by 七癖 at 09:43| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月25日

Joliet その2 仕様

Joliet では、ISO9660 の SVD を利用し、文字に UCS-2 を使います。 それに伴う変更点を挙げてゆきます。


1.SVD の設定

1.1 エスケープシーケンスの設定

SVD の Escape Sequences に、UCS-2 を示す 3 レベルあるエスケープシーケンスのいずれかを設定します。

StandardLevelDecimalHex BytesASCII
UCS-2Level 12/5, 2/15, 4/00x25, 0x2F, 0x40"%\@"
UCS-2Level 22/5, 2/15, 4/30x25, 0x2F, 0x43"%\C"
UCS-2Level 32/5, 2/15, 4/50x25, 0x2F, 0x45"%\E"

残りの29バイトは全て 0x00 です。
とりあえず全部扱えるレベル3に設定しておくのが無難です。

1.2 Volume Flags の設定

UCS-2 は ISO2375 に登録済のため、SVD の Volume Flags は 0 です。


2.文字

2.1 記述法

各文字は UCS-2 の文字をビッグエンディアンで使用します。

2.2 使えない文字

次の文字は使用禁止です。

コード文字意味備考
0x00,0x00〜0x00,0x90 制御文字 
0x00,0x2A*アスタリスク 
0x00,0x2F/スラッシュ 
0x00,0x3A:コロン 
0x00,0x3B;セミコロンファイル識別子のファイル名/拡張子とバージョンの区切りに使用
0x00,0x3F?疑問符 
0x00,0x5C\バックスラッシュ 

理由は書かれていませんが、 なんとなく Windows でファイル名として使えない文字は使えませんよ、と言っている気がします。

2.3 使用箇所

SVD 及び SVD から辿るファイルとディレクトリに UCS-2 の文字列を使用します。 並び立てると、

SVD : System Identifier
SVD : Volume Identifier
SVD : Volume Set Identifier
SVD : Publisher Identifier
SVD : Data Preparer Identifier
SVD : Application Identifier
SVD : Copyright File Identifier
SVD : Abstract File Identifier
SVD : Bibliographic File Identifier
ディレクトリレコード : File Identifier
パステーブル : Directory Identifier
拡張属性レコード : System Identifier

つまり a1/d1 文字を使用する箇所の全てです。


3.ファイル識別子

3.1 ファイル識別子の形

ファイル識別子は次の形を取ります。
ファイル名+0x00,0x2E+拡張子+0x00,0x3B+バージョン
0x00,0x2E = '.'
0x00,0x3B = ';'
単純に各文字をUCS-2の文字に変換しただけです。
ドットは自由に使えるので、ファイル名と拡張子の区切りは無いようなものです。

3.2 ファイル識別子の長さ

ファイル識別子はファイル名と拡張子の合計が64文字、128バイトまで使えます。


4.ディレクトリ識別子

4.1 ディレクトリ識別子の長さ

ディレクトリ識別子は64文字、128バイトまで使えます。

4.2 ルートディレクトリと自身のディレクトリ、親ディレクトリ

これらの特別なディレクトリの識別子には、 ISO9660 の PVD と同様に、 識別子の長さを 1 (バイト)と置き、 ルートディレクトリと自身のディレクトリ は 0x00、 親ディレクトリ は 0x01 と設定します。


5. ディレクトリ階層

ディレクトリ階層の深さに制限はありません。8 を越えてもいいです。


6. フルパス名

各ファイルは、以下の合計が 240 バイトを越えないようにします。
・ファイル識別子の長さ
・すべての関連したディレクトリの識別子の長さ
・関連したディレクトリの数

posted by 七癖 at 10:35| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月23日

Joliet その1 導入

Joliet は、1995年にMicrosoft社が提唱した CD-ROM 用のファイルシステムであり、ISO 9660:1988 の制限を緩めたものです。

Joliet では、ISO9660 と併用させるために、ISO9660 の SVD を使用します。そして、ディレクトリやパステーブルなど、ファイルシステムの構造と使い方は、ISO9660 と同じです。
違うのは、文字列に Unicode (正確にはUCS-2)を使っていることであり、それに関わる問題を調整しているだけです。

結果として、Joliet は ISO9660:1999 の SVD と EVD の中間のようなものであり、EVD の「当事者同士の合意」とある部分を定めたものになっています。というより、Joliet のような仕様が普及したため、ISO9660:1999 の EVD が作られたのでしょう。

参考文献

Joliet Specification
http://bmrc.berkeley.edu/people/chaffee/jolspec.html
今回の基礎資料。
他にも検索すれば幾つか見つかります。
Microsoft のサイトで見つからないため、オリジナルがどれか不明です。

その他、多くの方の WebSite、ソースコード。
posted by 七癖 at 09:31| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月21日

ISO9660 その15 情報交換の水準

PVD から辿るファイルとディレクトリには、以下の水準に分けられた制限があります。

水準123
ファイル名+拡張子[BYTE]8+33030
ディレクトリ名[BYTE]83131
ファイル分割不可不可
ディレクトリ階層888
フルパス名[BYTE]255255255


EVD から辿るファイルとディレクトリには、以下の制限があります。

水準123
ファイル識別子[BYTE]207207207
ディレクトリ識別子[BYTE]207207207
ファイル分割不可不可
ディレクトリ階層制限なし制限なし制限なし
フルパス名[BYTE]制限なし制限なし制限なし


PVD のファイル名+拡張子はの 30 は、ファイル名と拡張子の長さの合計で、'.'を除きます。 また、ファイル名か拡張子のどちらかは 1 文字以上です。

ディレクトリ階層は、ルートディレクトリを1とし、2、3、と続きます。

フルパス名[BYTE]には、ドライブレターを含みません。
0/LEVEL_02/LEVEL_03/LEVEL_04/LEVEL_05/LEVEL_06/LEVEL_07/LEVEL_08/FILENAME.EXT;32767
であれば 83 文字です。(ルートを1文字と数えると思うのですが、どうなのでしょう?)
水準1ならば問題ありません。

EVD のファイル/ディレクトリ識別子の 207 バイトという数字は、 ディレクトリレコードの仕様から算出されます。
ディレクトリレコードの長さは 8 ビットで記録され、 偶数のため最大254バイトです。 ファイル識別子以外の部分で最低33バイト必要であり、 CD-ROM XA で14バイト使用する(詳しくは不明)ため、 ファイル識別子の長さは最大207バイトになります。
なお、EVD のファイル識別子の拡張子、版数などは特に規定がなく、当事者間の合意によります。

一般的には 水準 1 が使われます。

posted by 七癖 at 09:35| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする

2007年06月19日

ISO9660 その14 拡張属性レコード

拡張属性レコードは使ったことが無いので、表のみ掲げておきます。

位置大きさ名称内容
0〜12unsigned shortOwner Identification 所有者識別情報
2〜32unsigned short (M)Owner Identification 上に同じ
4〜52unsigned shortGroup Identification グループ識別情報
6〜72unsigned short (M)Group Identification 上に同じ
8〜92unsigned shortPermissions 許可条件
10〜2617datetime_lFile Creation Date and Time ファイル作成日時
27〜4317datetime_lFile Modification Date and Time ファイル更新日時
44〜6017datetime_lFile Expiration Date and Time ファイル失効日時
61〜7717datetime_lFile Effective Date and Time ファイル発効日時
781unsigned charRecord Format レコード形式
791unsigned charRecord Attributes レコード属性
80〜812unsigned shortRecord Length レコード長
82〜832unsigned short (M)Record Length 上に同じ
84〜11532char[32]System identifier システム識別子 (a文字)
116〜17964unsigned char[64]System Use =0
1801unsigned charExtended Attribute Record Version 拡張属性レコードの版数
1811unsigned charLength of Escape Sequences (LEN_ESC) エスケープシーケンスの長さ
182〜24564unsigned char[64]Reserved =0
246〜2472unsigned shortLength of Application Use (LEN_AU) 応用システム用欄の長さ
248〜2492unsigned short (M)Length of Application Use (LEN_AU) 上に同じ
250〜(250+LEN_AU-1)LEN_AUunsigned char[LEN_AU]Application Use 応用システム用
250+LEN_AU〜(250+LEN_AU+LEN_ESC-1)LEN_ESCchar[LEN_ESC]Escape Sequences エスケープシーケンス


Permissions は次のとおりです。

ビット実行者内容
0システム0=読み取り可能 / 1=読み取り不能
1=1
20=実行可能 / 1=実行不能
3=1
4所有者0=読み取り可能 / 1=読み取り不能
5=1
60=実行可能 / 1=実行不能
7=1
8グループ0=読み取り可能 / 1=読み取り不能
9=1
100=実行可能 / 1=実行不能
11=1
12その他0=読み取り可能 / 1=読み取り不能
13=1
140=実行可能 / 1=実行不能
15=1

posted by 七癖 at 09:36| Comment(0) | TrackBack(0) | ファイルシステム | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。