EN JA
XSTR(1)
XSTR(1) FreeBSD General Commands Manual XSTR(1)

名称

xstr共有文字列を実現するために C 言語プログラムから文字列を抽出する

書式

xstr [ -cv][ -][ file ...]

解説

xstr ユーティリティは、巨大なプログラムの文字列部分を保持するデータベースファイル strings をメンテナンスします。プログラム中の文字列は共通文字列エリアへの参照に置換されます。これにより、共有文字列定数が実現できます。これは特に read-only な文字列に有効です。

オプションは、次のものが利用可能です:

-
標準入力からソースを読み込みます。
-c
C ソース file または標準の入力 ( -) から文字列を抽出し、いくつかの number (数) のために文字列参照を形式 (&xstr[number]) の式に置き換えます。適切な xstr の宣言がファイルの先頭に挿入されます。変換した C 言語ソースはファイル x.c に出力されます。文字列は文字列データベースファイル strings に格納されます。すでに同じ文字列がデータベース中に存在している場合、および既に存在する文字列のサフィックスの場合、データベースは変更されません。
-v
冗長モード。

プログラムの全ソースファイルをコンパイルした後、共通の xstr 領域を宣言するファイル xs.c を、以下のようにコマンドを実行して作成できます。

xstr

このあとでファイル xs.c をコンパイルし、他のオブジェクトファイルとリンクします。文字列配列を読み込み専用にできるならば、必要な領域とスワップによるオーバヘッドを少なくすることができます。

xstr はまた、1 つのファイルにのみ適用することもできます。次のコマンド

xstr name

によって、同じディレクトリ内のファイル strings を変更したり、参照することなく、 x.cxs.c を作成します。

C 言語プリプロセッサのあとで xstr を実行するのが便利な場合、あるいはそうすることが必要な場合があります。マクロによって文字列が生成される時などがそうです。 C 言語プリプロセッサの後で xstr を実行するための適切なコマンド列は次の通りです:

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

xstr ユーティリティは、新しい文字列を追加する必要がないかぎり、ファイル strings を更新しません。このため、 make(1) が不必要に xs.o を作り直すことをなくすことができます。

関連ファイル

strings
文字列データベース
x.c
変換後のソースファイル
xs.c
配列 xstr を定義した C ソースコード
/tmp/xs*
xstr name”が strings にタッチできないときの一時ファイル

関連項目

mkstr(1)

歴史

xstr は、 3.0BSD で登場しました。

バグ

ある文字列が他の文字列のサフィックスであり、かつ短いほうの文字列のほうが先に xstr によって処理されたなら、たとえ、長いほうの文字列のみを格納すればよい場合にも、両方の文字列がデータベース strings に格納されます。
December 30, 1993 FreeBSD