xstr.1 (f682f10c76449b3af3b1dd9afff859cd1cd07116) xstr.1 (46122f64a613f1ef232d4adbeeb4753d725e5102)
1.\" Copyright (c) 1980, 1993
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.

--- 49 unchanged lines hidden (view full) ---

58.It Fl
59Read from the standard input.
60.It Fl c
61Extract the strings from the C source
62.Ar file
63or the standard input
64.Pq Fl ,
65replacing
1.\" Copyright (c) 1980, 1993
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.

--- 49 unchanged lines hidden (view full) ---

58.It Fl
59Read from the standard input.
60.It Fl c
61Extract the strings from the C source
62.Ar file
63or the standard input
64.Pq Fl ,
65replacing
66string references by expressions of the form (&xstr[number])
67for some number.
66string references by expressions of the form
67.Li (&xstr[number])
68for some
69.Ar number .
68An appropriate declaration of
70An appropriate declaration of
69.Nm
71.Va xstr
70is prepended to the file.
71The resulting C text is placed in the file
72.Pa x.c ,
73to then be compiled.
74The strings from this file are placed in the
75.Pa strings
76data base if they are not there already.
77Repeated strings and strings which are suffixes of existing strings
78do not cause changes to the data base.
79.It Fl v
80Verbose mode.
81.El
82.Pp
83After all components of a large program have been compiled a file
84.Pa xs.c
85declaring the common
72is prepended to the file.
73The resulting C text is placed in the file
74.Pa x.c ,
75to then be compiled.
76The strings from this file are placed in the
77.Pa strings
78data base if they are not there already.
79Repeated strings and strings which are suffixes of existing strings
80do not cause changes to the data base.
81.It Fl v
82Verbose mode.
83.El
84.Pp
85After all components of a large program have been compiled a file
86.Pa xs.c
87declaring the common
86.Nm
88.Va xstr
87space can be created by a command of the form
89space can be created by a command of the form
88.Bd -literal -offset indent
89xstr
90.Ed
91.Pp
90.Pp
91.Dl xstr
92.Pp
92The file
93.Pa xs.c
94should then be compiled and loaded with the rest
95of the program.
96If possible, the array can be made read-only (shared) saving
97space and swap overhead.
98.Pp
99The

--- 17 unchanged lines hidden (view full) ---

117after the C preprocessor if any macro definitions yield strings
118or if there is conditional code which contains strings
119which may not, in fact, be needed.
120An appropriate command sequence for running
121.Nm
122after the C preprocessor is:
123.Pp
124.Bd -literal -offset indent -compact
93The file
94.Pa xs.c
95should then be compiled and loaded with the rest
96of the program.
97If possible, the array can be made read-only (shared) saving
98space and swap overhead.
99.Pp
100The

--- 17 unchanged lines hidden (view full) ---

118after the C preprocessor if any macro definitions yield strings
119or if there is conditional code which contains strings
120which may not, in fact, be needed.
121An appropriate command sequence for running
122.Nm
123after the C preprocessor is:
124.Pp
125.Bd -literal -offset indent -compact
125cc \-E name.c | xstr \-c \-
126cc \-c x.c
126cc -E name.c | xstr -c -
127cc -c x.c
127mv x.o name.o
128.Ed
129.Pp
130The
131.Nm
132utility does not touch the file
133.Pa strings
134unless new items are added, thus
135.Xr make 1
136can avoid remaking
137.Pa xs.o
138unless truly necessary.
139.Sh FILES
128mv x.o name.o
129.Ed
130.Pp
131The
132.Nm
133utility does not touch the file
134.Pa strings
135unless new items are added, thus
136.Xr make 1
137can avoid remaking
138.Pa xs.o
139unless truly necessary.
140.Sh FILES
140.Bl -tag -width /tmp/xsxx* -compact
141.Bl -tag -width ".Pa /tmp/xs*" -compact
141.It Pa strings
142data base of strings
143.It Pa x.c
144massaged C source
145.It Pa xs.c
142.It Pa strings
143data base of strings
144.It Pa x.c
145massaged C source
146.It Pa xs.c
146C source for definition of array `xstr'
147C source for definition of array
148.Va xstr
147.It Pa /tmp/xs*
149.It Pa /tmp/xs*
148temp file when `xstr name' does not touch
150temporary file when
151.Dq Li "xstr name"
152does not touch
149.Pa strings
150.El
151.Sh SEE ALSO
152.Xr mkstr 1
153.Sh HISTORY
154The
155.Nm
156command appeared in
157.Bx 3.0 .
158.Sh BUGS
159If a string is a suffix of another string in the data base,
160but the shorter string is seen first by
161.Nm
162both strings will be placed in the data base, when just
163placing the longer one there will do.
153.Pa strings
154.El
155.Sh SEE ALSO
156.Xr mkstr 1
157.Sh HISTORY
158The
159.Nm
160command appeared in
161.Bx 3.0 .
162.Sh BUGS
163If a string is a suffix of another string in the data base,
164but the shorter string is seen first by
165.Nm
166both strings will be placed in the data base, when just
167placing the longer one there will do.