Added routine to check signals.

This commit is contained in:
duk 1985-01-10 13:17:22 +00:00
parent 4ba6e7a39c
commit ba826bad5c

71
util/led/error.c Normal file
View file

@ -0,0 +1,71 @@
#ifndef lint
static char rcsid[] = "$Header$";
#endif
#include <stdio.h>
#include <signal.h>
#include "out.h"
#include "const.h"
static short nerrors = 0;
static
stop()
{
extern char *outputname;
if (nerrors)
unlink(outputname);
exit(nerrors);
}
trap_signals()
{
static int trap_them[] = { SIGHUP, SIGINT, SIGQUIT, SIGTERM, 0 };
register int *ip;
for (ip = trap_them; *ip; ip++)
if (signal(*ip, stop) == SIG_IGN)
signal(*ip, SIG_IGN); /* Oops, reset. */
}
/* VARARGS1 */
fatal(format, a1, a2, a3, a4)
char *format;
{
nerrors++;
diag("fatal", format, a1, a2, a3, a4);
stop();
}
/* VARARGS1 */
warning(format, a1, a2, a3, a4)
char *format;
{
diag("warning", format, a1, a2, a3, a4);
}
/* VARARGS1 */
error(format, a1, a2, a3, a4)
char *format;
{
nerrors++;
diag("error", format, a1, a2, a3, a4);
}
static
diag(tail, format, a1, a2, a3, a4)
char *tail;
char *format;
{
extern char *progname, *archname, *modulname;
fprintf(stderr, "%s: ", progname);
if (archname)
fprintf(stderr, "%s: ", archname);
if (modulname)
fprintf(stderr, "%s: ", modulname);
fprintf(stderr, format, a1, a2, a3, a4);
fprintf(stderr, " (%s)\n", tail);
}