tail head cat sleep
QR code linking to this page

manページ  — XSTR

名称

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

内容

書式


xstr [-c] [-] [-v] [file]

解説

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

オプションは、以下のものが利用可能です:
- 標準入力からソースを読み込みます。
-c
  指定された C 言語ソースまたは標準入力から文字列を抽出し、 文字列を (&xstr[number]) 形式に変換し、適当な number を割り当てます。 適切な xstr の宣言がファイルの先頭に挿入されます。変換した C 言語ソース はファイル x.c に出力されます。文字列は文字列データベースファイル strings に格納されます。 すでに同じ文字列がデータベース中に存在している場合、 および既に存在する文字列のサフィックスの場合、 データベースは変更されません。
-v
  冗長モード。

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

xstr

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

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

xstr name

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

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* 中間ファイル

関連項目

mkstr(1)

バグ

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

歴史

xstrBSD 3.0 で追加されました。

XSTR (1) December 30, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

A typical Unix /bin or /usr/bin directory contains a hundred different kinds of programs, written by dozens of egotistical programmers, each with its own syntax, operating paradigm, rules of use ... strategies for specifying options, and different sets of constraints.
— The Unix Haters' handbook