適当に翻訳する。
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];
};
皆さん、こんにちは。
autoconf の勉強を始めたばかりですが、最近「auto」系機能を使ったごくごく簡単なコードを書いています。このコードはうまく動いてくれました。(Makefile 生成も含めて全てうまくいきました。)しかし、マクロ AC_CHECK_HEADERS([...]) を加えた時に問題が起こりました。シェル・スクリプト configure は問題なく生成できたので、./configure を実行し、成功しました。しかし、config.log を確認すると、以下のエラーがありました。
"error: ac_nonexistent.h, no such file or directory."
...
"Compilation terminated."
幸い、connfig.log に複数回登場するこのエラー以外にエラーはありませんでした。
同じコードを Fedora 14 と RHEL 6.0 の両方で試したところ、同じ現象が発生しました。
何が起きているのか、ご教示いただきたい。
ある人曰く、ac_nonexistent.h のエラーは、開発者が AC_CHECK_HEADERS() マクロを用いており、且つ、対象ヘッダファイルが存在する場合に生じるものだということですが、これは本当でしょうか。
お願いします。
?????? さんの 2011年3月7日 午前 04:42 の投稿について。
皆さん、こんにちは。
autoconf の勉強を始めたばかりですが、最近「auto」系機能を使ったごくごく簡単なコードを書いています。このコードはうまく動いてくれました。(Makefile 生成も含めて全てうまくいきました。)しかし、マクロ AC_CHECK_HEADERS([...]) を加えた時に問題が起こりました。シェル・スクリプト configure は問題なく生成できたので、./configure を実行し、成功しました。しかし、config.log を確認すると、以下のエラーがありました。"error: ac_nonexistent.h, no such file or directory."
...
"Compilation terminated."
これは悪いことではありません。そのコンパイル・エラーは次の事を検証するために必要とされています。即ち、存在しないヘッダを参照している不完全なソースコードがコンパイラに正しく検出され、排除されているかを検証するためです。足りないヘッダをコンパイラがどのように検出しているのか、これを把握していることが後の AC_CHECK_HEADERS の試験で重要になります。AC_CHECK_HEADERS はどのヘッダが存在するかを調べます。
蹉跌したコンパイルの全てがバグというわけではありません。
こんにちは。名前の表示がおかしいのは許してください。
Eric Blake の 2011年3月7日月曜日 03:44CET の投稿について。
������ さんの 2011年3月7日 午前 04:42 の投稿について。
"error: ac_nonexistent.h, no such file or directory."
...
"Compilation terminated."幸い、connfig.log に複数回登場するこのエラー以外にエラーはありませんでした。
これは悪いことではありません。そのコンパイル・エラーは次の事を検証するために必要とされています。即ち、存在しないヘッダを参照している不完全なソースコードがコンパイラに正しく検出され、排除されているかを検証するためです。足りないヘッダをコンパイラがどのように検出しているのか、これを把握していることが後の AC_CHECK_HEADERS の試験で重要になります。AC_CHECK_HEADERS はどのヘッダが存在するかを調べます。
蹉跌したコンパイルの全てがバグというわけではありません。
AC_*_IFELSE は望ましい結果がそれとわかるように示しておくべきではないでしょうか。そうすれば config.log では予期せぬ結果だけを書き出すことができるはずです。
それでは。Ralf 。
Ralf Wildenhues <address@hidden> さんの 2011年3月7日月曜日午後 2:10 の投稿について。
こんにちは。名前の表示がおかしいのは許してください。
Eric Blake の 2011年3月7日月曜日 03:44CET の投稿について。
СоУВУВ さんの 2011年3月7日 午前 04:42 の投稿について。
"error: ac_nonexistent.h, no such file or directory."
...
"Compilation terminated."幸い、connfig.log に複数回登場するこのエラー以外にエラーはありませんでした。
これは悪いことではありません。そのコンパイル・エラーは次の事を検証するために必要とされています。即ち、存在しないヘッダを参照している不完全なソースコードがコンパイラに正しく検出され、排除されているかを検証するためです。足りないヘッダをコンパイラがどのように検出しているのか、これを把握していることが後の AC_CHECK_HEADERS の試験で重要になります。AC_CHECK_HEADERS はどのヘッダが存在するかを調べます。
蹉跌したコンパイルの全てがバグというわけではありません。
AC_*_IFELSE は望ましい結果がそれとわかるように示しておくべきではないでしょうか。そうすれば config.log では予期せぬ結果だけを書き出すことができるはずです。
そのような変更があれば嬉しいですね。
カレンダー
カテゴリー
最新コメント
最新記事
ブログ内検索
広告