xref: /freebsd/usr.bin/xstr/xstr.1 (revision 7720a19d5d7456232e8e11909dd72d31ced622d1)
19b50d902SRodney W. Grimes.\" Copyright (c) 1980, 1993
29b50d902SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
39b50d902SRodney W. Grimes.\"
49b50d902SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
59b50d902SRodney W. Grimes.\" modification, are permitted provided that the following conditions
69b50d902SRodney W. Grimes.\" are met:
79b50d902SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
89b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
99b50d902SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
109b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
119b50d902SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
129b50d902SRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software
139b50d902SRodney W. Grimes.\"    must display the following acknowledgement:
149b50d902SRodney W. Grimes.\"	This product includes software developed by the University of
159b50d902SRodney W. Grimes.\"	California, Berkeley and its contributors.
169b50d902SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors
179b50d902SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
189b50d902SRodney W. Grimes.\"    without specific prior written permission.
199b50d902SRodney W. Grimes.\"
209b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
219b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
229b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
239b50d902SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
249b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
259b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
269b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
279b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
289b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
299b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
309b50d902SRodney W. Grimes.\" SUCH DAMAGE.
319b50d902SRodney W. Grimes.\"
329b50d902SRodney W. Grimes.\"     @(#)xstr.1	8.2 (Berkeley) 12/30/93
339b50d902SRodney W. Grimes.\"
349b50d902SRodney W. Grimes.Dd December 30, 1993
359b50d902SRodney W. Grimes.Dt XSTR 1
369b50d902SRodney W. Grimes.Os BSD 3
379b50d902SRodney W. Grimes.Sh NAME
389b50d902SRodney W. Grimes.Nm xstr
399b50d902SRodney W. Grimes.Nd "extract strings from C programs to implement shared strings"
409b50d902SRodney W. Grimes.Sh SYNOPSIS
419b50d902SRodney W. Grimes.Nm xstr
429b50d902SRodney W. Grimes.Op Fl c
439b50d902SRodney W. Grimes.Op Fl
447720a19dSPhilippe Charnier.Op Fl v
459b50d902SRodney W. Grimes.Op Ar file
469b50d902SRodney W. Grimes.Sh DESCRIPTION
479b50d902SRodney W. Grimes.Nm Xstr
489b50d902SRodney W. Grimesmaintains a file
499b50d902SRodney W. Grimes.Pa strings
509b50d902SRodney W. Grimesinto which strings in component parts of a large program are hashed.
519b50d902SRodney W. GrimesThese strings are replaced with references to this common area.
529b50d902SRodney W. GrimesThis serves to implement shared constant strings, most useful if they
539b50d902SRodney W. Grimesare also read-only.
549b50d902SRodney W. Grimes.Pp
559b50d902SRodney W. GrimesAvailable options:
569b50d902SRodney W. Grimes.Bl -tag -width Ds
579b50d902SRodney W. Grimes.It Fl
589b50d902SRodney W. Grimes.Nm Xstr
599b50d902SRodney W. Grimesreads from the standard input.
609b50d902SRodney W. Grimes.It Fl c
619b50d902SRodney W. Grimes.Nm Xstr
629b50d902SRodney W. Grimeswill extract the strings from the C source
639b50d902SRodney W. Grimes.Ar file
649b50d902SRodney W. Grimesor the standard input
659b50d902SRodney W. Grimes.Pq Fl ,
669b50d902SRodney W. Grimesreplacing
679b50d902SRodney W. Grimesstring references by expressions of the form (&xstr[number])
689b50d902SRodney W. Grimesfor some number.
699b50d902SRodney W. GrimesAn appropriate declaration of
707720a19dSPhilippe Charnier.Nm
719b50d902SRodney W. Grimesis prepended to the file.
729b50d902SRodney W. GrimesThe resulting C text is placed in the file
739b50d902SRodney W. Grimes.Pa x.c ,
749b50d902SRodney W. Grimesto then be compiled.
759b50d902SRodney W. GrimesThe strings from this file are placed in the
769b50d902SRodney W. Grimes.Pa strings
779b50d902SRodney W. Grimesdata base if they are not there already.
789b50d902SRodney W. GrimesRepeated strings and strings which are suffixes of existing strings
799b50d902SRodney W. Grimesdo not cause changes to the data base.
807720a19dSPhilippe Charnier.It Fl v
817720a19dSPhilippe CharnierVerbose mode.
829b50d902SRodney W. Grimes.El
839b50d902SRodney W. Grimes.Pp
849b50d902SRodney W. GrimesAfter all components of a large program have been compiled a file
859b50d902SRodney W. Grimes.Pa xs.c
869b50d902SRodney W. Grimesdeclaring the common
879b50d902SRodney W. Grimes.Nm xstr
889b50d902SRodney W. Grimesspace can be created by a command of the form
899b50d902SRodney W. Grimes.Bd -literal -offset indent
909b50d902SRodney W. Grimesxstr
919b50d902SRodney W. Grimes.Ed
929b50d902SRodney W. Grimes.Pp
939b50d902SRodney W. GrimesThe file
949b50d902SRodney W. Grimes.Pa xs.c
959b50d902SRodney W. Grimesshould then be compiled and loaded with the rest
969b50d902SRodney W. Grimesof the program.
979b50d902SRodney W. GrimesIf possible, the array can be made read-only (shared) saving
989b50d902SRodney W. Grimesspace and swap overhead.
999b50d902SRodney W. Grimes.Pp
1009b50d902SRodney W. Grimes.Nm Xstr
1019b50d902SRodney W. Grimescan also be used on a single file.
1029b50d902SRodney W. GrimesA command
1039b50d902SRodney W. Grimes.Bd -literal -offset indent
1049b50d902SRodney W. Grimesxstr name
1059b50d902SRodney W. Grimes.Ed
1069b50d902SRodney W. Grimes.Pp
1079b50d902SRodney W. Grimescreates files
1089b50d902SRodney W. Grimes.Pa x.c
1099b50d902SRodney W. Grimesand
1109b50d902SRodney W. Grimes.Pa xs.c
1119b50d902SRodney W. Grimesas before, without using or affecting any
1129b50d902SRodney W. Grimes.Pa strings
1139b50d902SRodney W. Grimesfile in the same directory.
1149b50d902SRodney W. Grimes.Pp
1159b50d902SRodney W. GrimesIt may be useful to run
1167720a19dSPhilippe Charnier.Nm
1179b50d902SRodney W. Grimesafter the C preprocessor if any macro definitions yield strings
1189b50d902SRodney W. Grimesor if there is conditional code which contains strings
1199b50d902SRodney W. Grimeswhich may not, in fact, be needed.
1209b50d902SRodney W. GrimesAn appropriate command sequence for running
1219b50d902SRodney W. Grimes.Nm xstr
1229b50d902SRodney W. Grimesafter the C preprocessor is:
1239b50d902SRodney W. Grimes.Pp
1249b50d902SRodney W. Grimes.Bd -literal -offset indent -compact
1259b50d902SRodney W. Grimescc \-E name.c | xstr \-c \-
1269b50d902SRodney W. Grimescc \-c x.c
1279b50d902SRodney W. Grimesmv x.o name.o
1289b50d902SRodney W. Grimes.Ed
1299b50d902SRodney W. Grimes.Pp
1309b50d902SRodney W. Grimes.Nm Xstr
1319b50d902SRodney W. Grimesdoes not touch the file
1329b50d902SRodney W. Grimes.Pa strings
1339b50d902SRodney W. Grimesunless new items are added, thus
1349b50d902SRodney W. Grimes.Xr make 1
1359b50d902SRodney W. Grimescan avoid remaking
1369b50d902SRodney W. Grimes.Pa xs.o
1379b50d902SRodney W. Grimesunless truly necessary.
1389b50d902SRodney W. Grimes.Sh FILES
1399b50d902SRodney W. Grimes.Bl -tag -width /tmp/xsxx* -compact
1409b50d902SRodney W. Grimes.It Pa strings
1419b50d902SRodney W. GrimesData base of strings
1429b50d902SRodney W. Grimes.It Pa x.c
1439b50d902SRodney W. GrimesMassaged C source
1449b50d902SRodney W. Grimes.It Pa xs.c
1459b50d902SRodney W. GrimesC source for definition of array `xstr'
1469b50d902SRodney W. Grimes.It Pa /tmp/xs*
1479b50d902SRodney W. GrimesTemp file when `xstr name' doesn't touch
1489b50d902SRodney W. Grimes.Pa strings
1499b50d902SRodney W. Grimes.El
1509b50d902SRodney W. Grimes.Sh SEE ALSO
1519b50d902SRodney W. Grimes.Xr mkstr 1
1529b50d902SRodney W. Grimes.Sh BUGS
1539b50d902SRodney W. GrimesIf a string is a suffix of another string in the data base,
1549b50d902SRodney W. Grimesbut the shorter string is seen first by
1557720a19dSPhilippe Charnier.Nm
1569b50d902SRodney W. Grimesboth strings will be placed in the data base, when just
1579b50d902SRodney W. Grimesplacing the longer one there will do.
1589b50d902SRodney W. Grimes.Sh HISTORY
1599b50d902SRodney W. GrimesThe
1609b50d902SRodney W. Grimes.Nm
1619b50d902SRodney W. Grimescommand appeared in
1629b50d902SRodney W. Grimes.Bx 3.0 .
163