2.11BSD/man/cat1/mkstr.0
MKSTR(1) UNIX Programmer's Manual MKSTR(1)
NAME
mkstr - create an error message file by massaging C source
SYNOPSIS
mkstr [ - ] messagefile prefix file ...
DESCRIPTION
_M_k_s_t_r is used to create files of error messages. Its use
can make programs with large numbers of error diagnostics
much smaller, and reduce system overhead in running the pro-
gram as the error messages do not have to be constantly
swapped in and out.
_M_k_s_t_r will process each of the specified _f_i_l_e_s, placing a
massaged version of the input file in a file whose name con-
sists of the specified _p_r_e_f_i_x and the original name. A typ-
ical usage of _m_k_s_t_r would be
mkstr pistrings xx *.c
This command would cause all the error messages from the C
source files in the current directory to be placed in the
file _p_i_s_t_r_i_n_g_s and processed copies of the source for these
files to be placed in files whose names are prefixed with
_x_x.
To process the error messages in the source to the message
file _m_k_s_t_r keys on the string `error("' in the input stream.
Each time it occurs, the C string starting at the `"' is
placed in the message file followed by a null character and
a new-line character; the null character terminates the mes-
sage so it can be easily used when retrieved, the new-line
character makes it possible to sensibly _c_a_t the error mes-
sage file to see its contents. The massaged copy of the
input file then contains a _l_s_e_e_k pointer into the file which
can be used to retrieve the message, i.e.:
char efilname[] = "/usr/share/pascal/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);
}
Printed 11/26/99 October 22, 1996 1
MKSTR(1) UNIX Programmer's Manual MKSTR(1)
}
if (lseek(efil, (long) a1, 0) || read(efil, buf, 256) <= 0)
goto oops;
printf(buf, a2, a3, a4);
}
The optional - causes the error messages to be placed at the
end of the specified message file for recompiling part of a
large _m_k_s_t_red program.
SEE ALSO
lseek(2), xstr(1)
Printed 11/26/99 October 22, 1996 2