|
|
1.1 root 1: .\" Copyright (c) 1980 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)xstr.1 6.2 (Berkeley) 5/7/86
6: .\"
7: .TH XSTR 1 "May 7, 1986"
8: .UC
9: .SH NAME
10: xstr \- extract strings from C programs to implement shared strings
11: .SH SYNOPSIS
12: .B xstr
13: [
14: .B \-c
15: ] [
16: .B \-
17: ] [
18: file
19: ]
20: .SH DESCRIPTION
21: .I Xstr
22: maintains a file
23: .I strings
24: into which strings in component parts of a large program are hashed.
25: These strings are replaced with references to this common area.
26: This serves to implement shared constant strings, most useful if they
27: are also read-only.
28: .PP
29: The command
30: .PP
31: .DT
32: \fBxstr \-c\fR name
33: .PP
34: will extract the strings from the C source in name, replacing
35: string references by expressions of the form (&xstr[number])
36: for some number.
37: An appropriate declaration of
38: .I xstr
39: is prepended to the file.
40: The resulting C text is placed in the file
41: .I x.c,
42: to then be compiled.
43: The strings from this file are placed in the
44: .I strings
45: data base if they are not there already.
46: Repeated strings and strings which are suffices of existing strings
47: do not cause changes to the data base.
48: .PP
49: After all components of a large program have been compiled a file
50: .I xs.c
51: declaring the common
52: .I xstr
53: space can be created by a command of the form
54: .PP
55: .DT
56: \fBxstr\fR
57: .PP
58: This
59: .I xs.c
60: file should then be compiled and loaded with the rest
61: of the program.
62: If possible, the array can be made read-only (shared) saving
63: space and swap overhead.
64: .PP
65: .I Xstr
66: can also be used on a single file.
67: A command
68: .PP
69: .DT
70: \fBxstr\fR name
71: .PP
72: creates files
73: .I x.c
74: and
75: .I xs.c
76: as before, without using or affecting any
77: .I strings
78: file in the same directory.
79: .PP
80: It may be useful to run
81: .I xstr
82: after the C preprocessor if any macro definitions yield strings
83: or if there is conditional code which contains strings
84: which may not, in fact, be needed.
85: .I Xstr
86: reads from its standard input when the argument `\-' is given.
87: An appropriate command sequence for running
88: .I xstr
89: after the C preprocessor is:
90: .PP
91: .nf
92: .DT
93: \fBcc \-E\fR name.c | \fBxstr \-c\fR \-
94: \fBcc \-c\fR x.c
95: \fBmv\fR x.o name.o
96: .fi
97: .PP
98: .I Xstr
99: does not touch the file
100: .I strings
101: unless new items are added, thus
102: .I make
103: can avoid remaking
104: .I xs.o
105: unless truly necessary.
106: .SH FILES
107: .DT
108: strings Data base of strings
109: .br
110: x.c Massaged C source
111: .br
112: xs.c C source for definition of array `xstr'
113: .br
114: /tmp/xs* Temp file when `xstr name' doesn't touch
115: .I strings
116: .SH "SEE ALSO"
117: mkstr(1)
118: .SH BUGS
119: If a string is a suffix of another string in the data base,
120: but the shorter string is seen first by
121: .I xstr
122: both strings will be placed in the data base, when just
123: placing the longer one there will do.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.