.\" Copyright (c) 1988 Massachusetts Institute of Technology,
.\" Student Information Processing Board.  All rights reserved.
.\"
.\" $Header$
.\"
.TH COMPILE_ET 1 "30 Mar 1998" SIPB
.SH NAME
compile_et \- error table compiler
.SH SYNOPSIS
.B compile_et
file
.SH DESCRIPTION
.B Compile_et
converts a table listing error-code names and associated messages into
a C source file suitable for use with the
.IR com_err (3)
library.

The source file name must end with a suffix of ``.et''; the file
consists of a declaration supplying the name (up to four characters
long) of the error-code table:

.B error_table
.I name

followed by up to 256 entries of the form:

.B error_code
.I name,
"
.I string
"

and a final

.B end

to indicate the end of the table.

The name of the table is used to construct the name of a subroutine
.I initialize_XXXX_error_table
which must be called in order for the
.I com_err
library to recognize the error table.

The various error codes defined are assigned sequentially increasing
numbers (starting with a large number computed as a hash function of
the name of the table); thus for compatibility it is suggested that
new codes be added only to the end of an existing table, and that no
codes be removed from tables.

The names defined in the table are placed into a C header file with
preprocessor directives defining them as integer constants of up to
32 bits in magnitude.

A C source file is also generated which should be compiled and linked
with the object files which reference these error codes; it contains
the text of the messages and the initialization subroutine.  Both C
files have names derived from that of the original source file, with
the ``.et'' suffix replaced by ``.c'' and ``.h''.

A ``#'' in the source file is treated as a comment character, and all
remaining text to the end of the source line will be ignored.

.SH BUGS

Since the original
.B compile_et
uses a very simple parser based on
.IR yacc (1), 
and this current version of 
.B compile_et
uses an awk/sed combination of scripts, 
its error recovery leaves much to be desired.

.\" .IR for manual entries
.\" .PP for paragraph breaks

.SH "SEE ALSO"
com_err (3).

Ken Raeburn, "A Common Error Description Library for UNIX".
