Mdoc'ify man page. Use err(3). Remove whoami.

This commit is contained in:
Philippe Charnier 1997-06-30 06:42:43 +00:00
parent 0e25805f2f
commit 27c3c7d818
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=27095
3 changed files with 49 additions and 64 deletions

View File

@ -1,79 +1,78 @@
.\" Copyright (c) 1988 Massachusetts Institute of Technology,
.\" Student Information Processing Board. All rights reserved.
.\"
.\" $Header$
.\" $Header: /home/ncvs/src/usr.bin/compile_et/compile_et.1,v 1.1 1995/01/14 22:29:30 wollman Exp $
.\"
.TH COMPILE_ET 1 "22 Nov 1988" SIPB
.SH NAME
compile_et \- error table compiler
.SH SYNOPSIS
.B compile_et
file
.SH DESCRIPTION
.B Compile_et
.Dd November 22, 1988
.Os
.Dt COMPILE_ET 1
.Sh NAME
.Nm compile_et
.Nd error table compiler
.Sh SYNOPSIS
.Nm compile_et
.Ar file
.Sh DESCRIPTION
.Nm 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)
.Xr com_err 3
library.
.Pp
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
.Em error_table name
followed by up to 256 entries of the form:
.B error_code
.I name,
.Em error_code name ,
"
.I string
.Em string
"
and a final
.B end
.Em end
to indicate the end of the table.
.Pp
The name of the table is used to construct the name of a subroutine
.I initialize_XXXX_error_table
.Em initialize_XXXX_error_table
which must be called in order for the
.I com_err
.Xr com_err 3
library to recognize the error table.
.Pp
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.
.Pp
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.
.Pp
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''.
.Pp
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
.Sh BUGS
Since
.B compile_et
.Nm compile_et
uses a very simple parser based on
.IR yacc (1),
.Xr yacc 1 ,
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".
.Sh "SEE ALSO"
.Xr yacc 1 ,
.Xr com_err 3
.Pp
.Rs
.%A Ken Raeburn
.%T "A Common Error Description Library for UNIX"
.Re

View File

@ -7,11 +7,12 @@
*
*/
#include <err.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/file.h>
#include <string.h>
#include <sys/file.h>
#include <sys/param.h>
#include "mit-sipb-copyright.h"
#include "compiler.h"
@ -25,7 +26,7 @@ static const char copyright[] =
"Copyright 1987,1988 by MIT Student Information Processing Board";
static const char rcsid_compile_et_c[] =
"$Header: /home/ncvs/src/usr.bin/compile_et/compile_et.c,v 1.2 1995/01/14 22:29:31 wollman Exp $";
"$Header: /home/ncvs/src/usr.bin/compile_et/compile_et.c,v 1.3 1996/07/12 19:05:17 jkh Exp $";
#endif
extern char *gensym();
@ -41,10 +42,8 @@ extern int yylineno;
char * xmalloc (size) unsigned int size; {
char * p = malloc (size);
if (!p) {
perror (whoami);
exit (1);
}
if (!p)
err(1, NULL);
return p;
}
@ -112,14 +111,12 @@ char c_file[MAXPATHLEN]; /* output file */
char h_file[MAXPATHLEN]; /* output */
static void usage () {
fprintf (stderr, "%s: usage: %s ERROR_TABLE\n",
whoami, whoami);
fprintf (stderr, "usage: compile_et ERROR_TABLE\n");
exit (1);
}
static void dup_err (type, one, two) char const *type, *one, *two; {
fprintf (stderr, "%s: multiple %s specified: `%s' and `%s'\n",
whoami, type, one, two);
warnx("multiple %s specified: `%s' and `%s'", type, one, two);
usage ();
}
@ -132,10 +129,6 @@ int main (argc, argv) int argc; char **argv; {
/* argument parsing */
debug = 0;
filename = 0;
whoami = argv[0];
p = strrchr (whoami, '/');
if (p)
whoami = p+1;
while (argv++, --argc) {
char *arg = *argv;
if (arg[0] != '-') {
@ -153,7 +146,7 @@ int main (argc, argv) int argc; char **argv; {
if (!arg)
usage ();
if (language)
dup_err ("languanges", language_names[(int)language], arg);
dup_err ("languages", language_names[(int)language], arg);
#define check_lang(x,v) else if (!strcasecmp(arg,x)) language = v
check_lang ("c", lang_C);
check_lang ("ansi_c", lang_C);
@ -168,16 +161,12 @@ int main (argc, argv) int argc; char **argv; {
check_lang ("c-plus-plus", lang_CPP);
#undef check_lang
else {
fprintf (stderr, "%s: unknown language name `%s'\n",
whoami, arg);
fprintf (stderr, "\tpick one of: C K&R-C\n");
exit (1);
errx(1, "unknown language name `%s'\n\tpick one of: C K&R-C", arg);
}
}
else {
fprintf (stderr, "%s: unknown control argument -`%s'\n",
whoami, arg);
usage ();
warnx("unknown control argument -`%s'", arg);
usage ();
}
}
}
@ -186,9 +175,7 @@ int main (argc, argv) int argc; char **argv; {
if (!got_language)
language = lang_KRC;
else if (language == lang_CPP) {
fprintf (stderr, "%s: Sorry, C++ support is not yet finished.\n",
whoami);
exit (1);
errx(1, "sorry, C++ support is not yet finished");
}
p = xmalloc (strlen (filename) + 5);

View File

@ -17,4 +17,3 @@ enum lang {
int debug; /* dump debugging info? */
char *filename; /* error table source */
enum lang language;
const char *whoami;