strfile,
unstr
—
文字列を格納するためのランダムアクセスファイルを作成する
strfile
[
-iorsx]
[
-c
char]
source_file
[
output_file]
unstr
source_file
strfile は 1
つのパーセント記号
‘
%
’
を含む行で区切られる行グループを含むファイルを読み込み、
ヘッダ構造と各々の行グループのファイルオフセットを含む
データファイルを作成します。
このファイルによって文字列のランダムアクセスが可能となります。
出力ファイルは、それがコマンド行において指定されていない場合、
source_file.dat
というファイル名になります。
指定できるオプションとして、次のものがあります。
- -C
- ファイルにコメントが含まれることを示すフラグです。
本オプションは、ヘッダの
str_flags
フィールドの
STR_COMMENTS
ビットをセットさせます。
コメントは、行頭の 2
つの区切り文字で指示されますが、
strfile
はコメント行に対して特別な処理を行いません。
-
-c
char
- 区切り文字をパーセント記号から
char
に変更します。
- -i
- 文字列の並び換えを行なう際に、大文字・小文字を区別しません。
- -o
- 文字列をアルファベット順に並び換えます。
オフセットテーブルは参照される行グループのアルファベット順に
ソートされます。
文字列の頭のアルファベットと数字以外の文字は無視されます。
このオプションを指定すると、ヘッダ中の
str_flags
フィールドの
STR_ORDERED
ビットがセットされます。
- -r
- 文字列へのアクセスをランダム化します。
オフセットテーブル中のエントリはランダムに並び換えられます。
このオプションを指定すると、ヘッダ中の
str_flags
フィールドの
STR_RANDOM
ビットがセットされます。
- -s
- なにも表示せずに実行します。終了時にサマリのメッセージを表示しません。
- -x
- 行グループ中の各アルファベット文字を単純シーザー暗号
(simple caesar cypher) における 13
ポジションだけローテートします。
このオプションを指定すると、ヘッダ中の
str_flags
フィールドの
STR_ROTATED
ビットがセットされます。
ヘッダのフォーマットは以下のとおりです。
#define VERSION 1
unsigned long str_version; /* バージョン番号 */
unsigned long str_numstr; /* ファイル中の文字列の数 */
unsigned long str_longlen; /* 最長文字列の長さ */
unsigned long str_shortlen; /* 最短文字列の長さ */
#define STR_RANDOM 0x1 /* ランダムフラグの位置 */
#define STR_ORDERED 0x2 /* 並び換えフラグの位置 */
#define STR_ROTATED 0x4 /* rot-13されたテキスト */
unsigned long str_flags; /* フラグビットフィールド */
char str_delim; /* 区切り文字 */
全てのフィールドはネットワークバイトオーダで書かれます。
unstr は
strfile
で行なったことを元に戻すためのものです。
source_file
中に含まれる文字列を
source_file.dat
ファイルのヘッダにリストされた順で標準出力に表示します。
-o を使って
strfile
を実行した後、
unstr
を使ってそれをテーブルの順にダンプすることによって、
入力ファイルのソートされたバージョンを作成することが可能です。
byteorder(3),
fortune(6)
- strfile.dat
- デフォルトの出力ファイル。
strfile
ユーティリティは
4.4BSD
から登場しました。