Next: Sample Database, Up: Database Formats
updatedb
は,4の要素を5にする1ことでデータベースの大きさが小さくなるように,ファイル名のリ
ストを前部圧縮(front-compress)するため,frcode
を実行します.
前部圧縮(増分符合化としても知られている)は以下のように動作します.
データベースの項目は,(ユーザの利便性のため,大文字小文字を識別しないで) ソートされているリストです.リストはソートされているので,それぞれの項 目は,前の項目と同じ接頭辞(最初の文字列)を共有することがよくあります. それぞれのデータベース項目はオフセットバイトの差分の数で始まっていて, それは前の項目の更に前のものが使用している数より多くなる,前の項目に前 置される接頭辞への追加の文字数です.(数は負になることもあります.) それ 以降の数は,ヌルで終端されているASCII文字の残りです—共有している接尾 辞以降の名前の部分です.
オフセット差分数がバイト(+/-127)で保存できるものより大きい場合,バイト の値が0x80になり,それ以下の2バイトがその数値になっていて,それはハイバ イトを最初(ネットワークバイトの順序)にしたものを用います.
すべてのデータベースは,LOCATE02と呼ばれるダミーの項目で始まって
いて,それは,データベースファイルの書式が正しいことを確認するために,
locate
が調査するものです.検索時にはその項目は無視されます.
最初の(ダミー)項目を,先頭のデータベース以外からすべて切り取っても,デー タベースを連結させることは不可能です.これは,二番目とそれ以降の最初の 項目にあるオフセット差分数が間違ってしまうためです.
‘locate --statistics’の出力で,新しいデータベースの書式は ‘LOCATE02’として参照します.