Added routine to check signals.
This commit is contained in:
parent
4ba6e7a39c
commit
ba826bad5c
71
util/led/error.c
Normal file
71
util/led/error.c
Normal 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);
|
||||
}
|
Loading…
Reference in a new issue