XSTR(1) — NEWS-OS Programmer’s Manual
名称
xstr − 共用文字列を実現するために、Cプログラムから文字列を抽出する
形式
xstr [ −c ] [ − ] [ file ]
解説
xstr は、大きなプログラムのコンポーネント内の文字列がハッシュされるファイル strings を維持管理します。これらの文字列は、 この共通領域に対する参照で置き換えられます。これは、 共用定数文字列を実現するものであり、 読み取り専用である場合に最も有用です。
次のコマンドは、 ファイル name に収められている C のソースから文字列を抽出し、ある番号を使った形式 (&xstr[number]) の式で文字列の参照を置き換えます。
xstr −c name
そのファイルには、 xstr の適切な宣言が プリペンド(前置)されます。結果として得られた C テキストは、ファイル x.c に置かれ、その後コンパイルされます。 このファイルから抽出された文字列は、まだ strings データベース内に存在していなければ、 strings データベースに収められます。繰り返し出てくる文字列と、 データベースに既に存在している文字列のサフィックスとなっている文字列は、 データベースに対する変更を引き起こしません。
1 個の大きなプログラムのすべてのコンポーネントが既に コンパイルされている場合には、次の形式のコマンドを用いて、 共通の xstr スペースを宣言するファイル xs.c を作成することができます。
xstr
この xs.c ファイルは、あとでコンパイルし、 プログラムの残りの部分と共にロードする必要があります。 可能であれば、スペースとスワップオーバーヘッドを節約するために、 配列を読み取り専用(共用)にすることができます。
xstr は、単一のファイルに対して使用することもできます。コマンド
xstr name
は、同じディレクトリに strings ファイルがあっても、それを使用したり、 それに影響を及ぼしたりはせずに、前述のファイル x.c と xs.c を作成します。
文字列を生じさせるマクロ定義がある場合、 または実際には必要がない文字列を含んでいる条件コードがある場合には、 C プリプロセッサのあとにxstrを実行すると有用です。 引数 − が与えられた場合には、 xstr は、標準入力から読み取りを行います。 C プリプロセッサのあとに xstr を実行する場合の適切なコマンドのシーケンスは、 次のようになります。
cc −E name.c | xstr −c −
cc −c x.c
mv x.o name.o
xstr は、新しい項目が追加されない限り、ファイル strings にはタッチしません。したがって、ほんとうに必要でなければ、 make で xs.o の再作成を防止することができます。
関連ファイル
strings文字列のデータベース
x.c結果として得られる C テキスト
xs.c配列 ‘xstr’の定義のための C ソース
/tmp/xsxstr name が strings にタッチしないときの一時的ファイル
関連事項
バグ
ある文字列がデータベースにある別の文字列の サフィックスになっていて、その短いほうの文字列が xstr によって最初に見つけられた場合には、長いほうの文字列を 収めるだけでことたりる場合でも、 両方の文字列がデータベースに収められます。
NEWS-OS Release 4.2.1R