XSTR(1) UNIX Programmer's Manual XSTR(1)
xstr - extract strings from C programs to implement shared
S
\bSY
\bYN
\bNO
\bOP
\bPS
\bSI
\bIS
\bS
x
\bxs
\bst
\btr
\br [ -
\b-c
\bc ] [ -
\b- ] [ file ]
D
\bDE
\bES
\bSC
\bCR
\bRI
\bIP
\bPT
\bTI
\bIO
\bON
\bN
_
\bX_
\bs_
\bt_
\br maintains a file _
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\bs into which strings in com-
ponent parts of a large program are hashed. These strings
are replaced with references to this common area. This
serves to implement shared constant strings, most useful if
x
\bxs
\bst
\btr
\br -
\b-c
\bc name
will extract the strings from the C source in name, replac-
ing string references by expressions of the form
(&xstr[number]) for some number. An appropriate declaration
of _
\bx_
\bs_
\bt_
\br is prepended to the file. The resulting C text is
placed in the file _
\bx._
\bc, to then be compiled. The strings
from this file are placed in the _
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\bs data base if they
are not there already. Repeated strings and strings which
are suffices of existing strings do not cause changes to the
After all components of a large program have been compiled a
file _
\bx_
\bs._
\bc declaring the common _
\bx_
\bs_
\bt_
\br space can be created by
This _
\bx_
\bs._
\bc file should then be compiled and loaded with the
rest of the program. If possible, the array can be made
read-only (shared) saving space and swap overhead.
_
\bX_
\bs_
\bt_
\br can also be used on a single file. A command
creates files _
\bx._
\bc and _
\bx_
\bs._
\bc as before, without using or
affecting any _
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\bs file in the same directory.
It may be useful to run _
\bx_
\bs_
\bt_
\br after the C preprocessor if any
macro definitions yield strings or if there is conditional
code which contains strings which may not, in fact, be
needed. _
\bX_
\bs_
\bt_
\br reads from its standard input when the argu-
ment `-' is given. An appropriate command sequence for run-
ning _
\bx_
\bs_
\bt_
\br after the C preprocessor is:
Printed 7/9/88 May 7, 1986 1
XSTR(1) UNIX Programmer's Manual XSTR(1)
c
\bcc
\bc -
\b-E
\bE name.c | x
\bxs
\bst
\btr
\br -
\b-c
\bc -
_
\bX_
\bs_
\bt_
\br does not touch the file _
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\bs unless new items are
added, thus _
\bm_
\ba_
\bk_
\be can avoid remaking _
\bx_
\bs._
\bo unless truly neces-
strings Data base of strings
xs.c C source for definition of array `xstr'
/tmp/xs* Temp file when `xstr name' doesn't touch _
\bs_
\bt_
\br_
\bi_
\bn_
\bg_
\bs
S
\bSE
\bEE
\bE A
\bAL
\bLS
\bSO
\bO
If a string is a suffix of another string in the data base,
but the shorter string is seen first by _
\bx_
\bs_
\bt_
\br both strings
will be placed in the data base, when just placing the
longer one there will do.
Printed 7/9/88 May 7, 1986 2