Previous: Sample Database, Up: Database Formats


5.2.3 古いデータベースの書式

古いデータベースの書式は,Unixのlocatefindプログラム, そして早期のGNUがリリースしたもので使用されています.updatedbは, ‘--old-format’オプションが与えられた場合,この書式で生成します.

updatedbは,古い書式のデータベースを生成するために, bigramcodeと呼ばれるプログラムを実行します.古い書式は, 新しいものと以下の方式で異なります.オフセット差分数バイトで始まりヌル で終るそれぞれの項目の代わりに,-14から14までのオフセット差分数を示す0 から28の値になります.それ以上の大きなオフセット差分数を示すバイト値は, 0x1e (30)で0x80ではありません.大きな数は,ホストのバイト順でソートされ, それはネットワークバイトの順序である必要はなく,ホストのワード整数の大 きさとなっていて,それは通常4バイトです.その値が14より小さいものは表示 されません.データベースの行には終端バイトがありません.次の行の先頭は, 30より小さい値を持つバイトで示されます.

更に,最初のダミー項目で始まる代わりに,古いデータベース書式は,ファイ ルリストで最も一般的な128のbigramを含んでいる,256バイトの表で始 まります.bigramは調整されたバイトの組となっています.ハイビット セットを持つデータベースのバイトは,(ハイビットがクリアされてい る)bigram表内部の索引です.bigramとオフセット差分数の符合 化は,これらのデータベースを,新しい書式より20から25%まで小さくしますが, 8ビットクリーンにはなりません.特殊コードに使用される範囲にあるファイル 名のバイトは,データベース内では疑問符に置換され,それは,単一文字にマッ チするシェルのワイルドカードにはマッチしません.

そのため古い書式では,ASCII以外の文字の項目を忠実の保存することが不可能 です.そのため,国際化環境では使用すべきではありません.

locate --statistics’の出力は,古い書式の改行やハイビット文字を含 むファイル名の計数で間違えてしまうでしょう.