diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
commit | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch) | |
tree | ece253b876159b39c620e62b6c9b1174642e070e /usr.bin/mkstr/mkstr.1 |
initial import of NetBSD tree
Diffstat (limited to 'usr.bin/mkstr/mkstr.1')
-rw-r--r-- | usr.bin/mkstr/mkstr.1 | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/usr.bin/mkstr/mkstr.1 b/usr.bin/mkstr/mkstr.1 new file mode 100644 index 00000000000..1202cd2b521 --- /dev/null +++ b/usr.bin/mkstr/mkstr.1 @@ -0,0 +1,139 @@ +.\" $NetBSD: mkstr.1,v 1.3 1995/09/28 06:22:19 tls Exp $ +.\" +.\" Copyright (c) 1980, 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the University of +.\" California, Berkeley and its contributors. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)mkstr.1 8.1 (Berkeley) 6/6/93 +.\" +.Dd June 6, 1993 +.Dt MKSTR 1 +.Os +.Sh NAME +.Nm mkstr +.Nd create an error message file by massaging C source +.Sh SYNOPSIS +.Nm mkstr +.Op Fl +.Ar messagefile +.Ar prefix file ... +.Sh DESCRIPTION +.Nm Mkstr +creates files containing error messages extracted from C source, +and restructures the same C source, to utilize the created error message +file. +The intent of +.Nm mkstr +was to reduce the size of large programs and +reduce swapping (see +.Sx BUGS +section below). +.Pp +.Nm Mkstr +processes each of the specified +.Ar files , +placing a restructured version of the input in a file whose name +consists of the specified +.Ar prefix +and the original name. +A typical usage of +.Nm mkstr +is +.Bd -literal -offset indent +mkstr pistrings xx *.c +.Ed +.Pp +This command causes all the error messages from the C source +files in the current directory to be placed in the file +.Ar pistrings +and restructured copies of the sources to be placed in +files whose names are prefixed with +.Ar \&xx . +.Pp +Options: +.Bl -tag -width indent +.It Fl +Error messages are placed at the end of the specified +message file for recompiling part of a large +.Nm mkstr +ed +program. +.El +.Pp +.Nm mkstr +finds error messages in the source by +searching for the string +.Li \&`error("' +in the input stream. +Each time it occurs, the C string starting at the +.Sq \&"\& +is stored +in the message file followed by a null character and a new-line character; +The new source is restructured with +.Xr lseek 2 +pointers into the error message file for retrieval. +.Bd -literal -offset indent +char efilname = "/usr/lib/pi_strings"; +int efil = -1; + +error(a1, a2, a3, a4) +\&{ + char buf[256]; + + if (efil < 0) { + efil = open(efilname, 0); + if (efil < 0) { +oops: + perror(efilname); + exit 1 ; + } + } + if (lseek(efil, (long) a1, 0) \ read(efil, buf, 256) <= 0) + goto oops; + printf(buf, a2, a3, a4); +} +.Ed +.Sh SEE ALSO +.Xr lseek 2 , +.Xr xstr 1 +.Sh HISTORY +.Nm Mkstr +appeared in +.Bx 3.0 . +.Sh BUGS +.Nm mkstr +was intended for the limited architecture of the PDP 11 family. +Very few programs actually use it. The pascal interpreter, +.Xr \&pi 1 +and the editor, +.Xr \&ex 1 +are two programs that are built this way. +It is not an efficient method, the error messages +should be stored in the program text. |