xstr コマンド

目的

C プログラムから文字列を抽出して、共有文字列をインプリメントします。

構文

XSR-v (V) ] [  「-c」 ] [  ] [ ファイル ]

説明

xstr コマンドは、大きなプログラムのコンポーネント部分の中の文字列がハッシュされているファイル strings を保守します。 これらの文字列はこの配列への参照に置き換えられます。 これは、共有定数文字列を作成する上で役立ち、特に読み取り専用の文字列には有効です。

つまり、

xstr -c File

File パラメーター内の C ソースからストリングを抽出し、ストリング参照を何らかの数値の式 (& xstr[number]) に置き換えます。 ファイルの前に xstr 配列の適切な宣言が置かれます。 作成される C テキストはファイル x.c 内に入れられ、コンパイルされます。 このファイルからの文字列は、まだ存在していなければ、ファイル strings に追加されます。 文字列が繰り返し文字列および既存の文字列の接尾部である場合には、ファイル strings は変更されません。

文字列がファイル内の他の文字列の接尾部であっても、それより短い文字列が xstr コマンドによって最初に見つけられた場合は、その両方の文字列がファイル strings 内に入れられます。

大きなプログラムのすべてのコンポーネントがコンパイルされると、共通の xstr 配列スペースを宣言するファイル xs.c を、下記のフォーマットのコマンドを使って作成できます。

xstr

次に、この xs.c ファイルはコンパイルされ、プログラムの残りと一緒にロードされなければなりません。 もし可能ならば、配列を読み取り専用 (共有) にして、スペースとスワップのオーバーヘッドを節約することができます。

xstr コマンドは単一ファイルに対して使うこともできます。 つまり、

xstr File

前のコマンドと同様に x.cxs.c の 2 つのファイルを作成しますが、同じディレクトリー内の他の strings ファイルを使用したりそれに影響を与えたりしません。

マクロ定義によって文字列が作られたり、実際には必要ない文字列を含む条件コードがある場合には、C プリプロセッサーの後から xstr コマンドを実行するのが有効になります。

xstr コマンドは、引数 - (ハイフン) が指定されているときは標準入力から読み取り、同時に -c フラグが指定されない限り、strings ファイルを変更することはありません。

C プリプロセッサーの後から xstr コマンドを実行するのに適切なコマンド・シーケンスは、下記のとおりです。

cc -E name.c | xstr -c -
cc -c x.c
mv x.o name.o

新しい項目が追加されなければ、xstr コマンドはファイル strings にはタッチしません。そのため、本当に必要な場合でなければ、make コマンドによって xs.o ファイルを再作成することは避けられます。

フラグ

項目 説明
-c 指定されたファイルから文字列を取り出し、それを strings ファイル内に入れます。
-v 詳細モード。 strings ファイル内で文字列が見つかったとき、あるいは新しい文字列かどうかを知らせます。
- 標準入力から読み取ります。

  1. File.c パラメーター内の C ソースからストリングを抽出し、ストリング参照を (& xstr[number]) の形式の式に置き換えます。
    xstr -c File.c
    ファイルの前に xstr 配列の適切な宣言が置かれます。 作成される C テキストはファイル x.c 内に入れられ、コンパイルされます。
  2. xs.c ファイルで共通 xstr 配列スペースを宣言するには、次のようにします。
    xstr

ファイル

項目 説明
ストリング 抽出された文字列を含むファイル。
x.c 抽出された C ソース。
xs.c xstr 配列の定義用 C ソース。
/tmp/xs* xstr コマンドが strings ファイルにタッチしない場合の一時ファイル
/usr/ccs/bin/mkstr 実行可能ファイル。
/usr/ccs/bin/mkstr Berkeley 環境のための実行可能ファイル。