忍者ブログ

素人翻訳

適当に翻訳する。

k3b、ブルーレイ、ディレクトリ数制限

出典:osdir.com
題:Re: mkisofs は経路表の項目数を 0xFFFF 個に限っている?
mkisofs の管理者様へ

84000 程度のディレクトリを持つ CD-ROM イメージを書き込もうとすると、2 の 16 乗のディレクトリ数上限にぶつかる。これは write.c 文書の以下に抜粋した部分に因る。

/*
* ここから経路表に書き込んでいく。ルート・ディレクトリから始める。
*/
if (next_path_index > 0xffff) {
#ifdef USE_LIBSCHILY
  comerrno(EX_BAD,
    "Unable to generate sane path tables - too many directories (%d)\n",
    next_path_index);

「sane」という語に注意。無効という意味ではない。

疑問:この現象は ISO 9660 標準仕様に基づくものなのか、そうでない何かなのか。ISO 9660 形式のデータと大量のディレクトリを持つ DVD ではどうなのか。

「if (next_path_index > 0xffff)」という検査を単純に飛ばしたらどうなるか。

全ての教示と cdrtools 開発に捧げられた素晴らしい仕事とに、先に礼を述べておく。

「directory」構造体の「path_index」は unsigned short で定義されており、65536 が上限。(mkisofs.h を参照)

「path_index」は経路表(path table)で利用される。これは iso9660.h で定義されていて、親ディレクトリの ID を示すのに 2 バイトしか使えない。次のサイトの 9.4 節「経路表の単位の形式」も参照。

http://www.y-adagio.com/public/standards/iso_cdromr/sect_2.htm

James Pearson

訳註:「directory」構造体の「path_index」は現在(cdrtools-3.00)、 unsigned int で定義されている(mkisofs.h にて)。0xffff の判定は健在(write.c にて)で、ディレクトリは 65536 個までしか使えない。

「iso_path_table」構造体(iso9660.h にて)

struct iso_path_table {
   unsigned char name_len[2]; /* 721 */
   char extent[4]; /* 731 */
   char parent[2]; /* 721 */
   char name[1];
};
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[08/18 NONAME]
[05/18 NONAME]
[04/09 NONAME]
[03/21 NONAME]
[03/20 NONAME]

最新記事

ブログ内検索

広告

バーコード

広告