Patrick Welche <prlw1@cam.ac.uk>
[netbsd-mini2440.git] / usr.bin / mkstr / mkstr.1
blob4be730e650820ef4d6e7b68103e9e26fc87bd915
1 .\"     $NetBSD: mkstr.1,v 1.10 2003/03/30 20:50:22 wiz Exp $
2 .\"
3 .\" Copyright (c) 1980, 1990, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)mkstr.1     8.1 (Berkeley) 6/6/93
31 .\"
32 .Dd June 6, 1993
33 .Dt MKSTR 1
34 .Os
35 .Sh NAME
36 .Nm mkstr
37 .Nd create an error message file by massaging C source
38 .Sh SYNOPSIS
39 .Nm
40 .Op Fl
41 .Ar messagefile
42 .Ar prefix file ...
43 .Sh DESCRIPTION
44 .Nm
45 creates files containing error messages extracted from C source,
46 and restructures the same C source, to use the created error message
47 file.
48 The intent of
49 .Nm
50 was to reduce the size of large programs and
51 reduce swapping (see
52 .Sx BUGS
53 section below).
54 .Pp
55 .Nm
56 processes each of the specified
57 .Ar files ,
58 placing a restructured version of the input in a file whose name
59 consists of the specified
60 .Ar prefix
61 and the original name.
62 A typical usage of
63 .Nm
65 .Bd -literal -offset indent
66 mkstr pistrings xx *.c
67 .Ed
68 .Pp
69 This command causes all the error messages from the C source
70 files in the current directory to be placed in the file
71 .Ar pistrings
72 and restructured copies of the sources to be placed in
73 files whose names are prefixed with
74 .Ar \&xx .
75 .Pp
76 Options:
77 .Bl -tag -width indent
78 .It Fl
79 Error messages are placed at the end of the specified
80 message file for recompiling part of a large
81 .Nm
83 program.
84 .El
85 .Pp
86 .Nm
87 finds error messages in the source by
88 searching for the string
89 .Li \&`error("'
90 in the input stream.
91 Each time it occurs, the C string starting at the
92 .Sq \&"\&
93 is stored
94 in the message file followed by a null character and a new-line character;
95 The new source is restructured with
96 .Xr lseek 2
97 pointers into the error message file for retrieval.
98 .Bd -literal -offset indent
99 char efilname = "/usr/lib/pi_strings";
100 int efil = -1;
102 error(a1, a2, a3, a4)
104         char buf[256];
106         if (efil \*[Lt] 0) {
107                 efil = open(efilname, 0);
108                 if (efil \*[Lt] 0) {
109 oops:
110                         perror(efilname);
111                         exit 1 ;
112                 }
113         }
114         if (lseek(efil, a1, 0) \*[Lt] 0 || read(efil, buf, 256) \*[Le] 0)
115                 goto oops;
116         printf(buf, a2, a3, a4);
119 .Sh SEE ALSO
120 .Xr xstr 1 ,
121 .Xr lseek 2
122 .Sh HISTORY
124 appeared in
125 .Bx 3.0 .
126 .Sh BUGS
128 was intended for the limited architecture of the PDP-11 family.
129 Very few programs actually use it.
130 It is not an efficient method, the error messages
131 should be stored in the program text.