diff options
Diffstat (limited to 'contrib/libf2c/libF77/setsig.c')
-rw-r--r-- | contrib/libf2c/libF77/setsig.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/contrib/libf2c/libF77/setsig.c b/contrib/libf2c/libF77/setsig.c new file mode 100644 index 0000000..96826be --- /dev/null +++ b/contrib/libf2c/libF77/setsig.c @@ -0,0 +1,86 @@ +/* Set up the signal behavior. */ + +#include <stdio.h> +#include "signal1.h" + +#ifndef SIGIOT +#ifdef SIGABRT +#define SIGIOT SIGABRT +#endif +#endif + +#include <stdlib.h> + +extern void sig_die (char *, int); + +static void +sigfdie (Sigarg) +{ + Use_Sigarg; + sig_die ("Floating Exception", 1); +} + + +static void +sigidie (Sigarg) +{ + Use_Sigarg; + sig_die ("IOT Trap", 1); +} + +#ifdef SIGQUIT +static void +sigqdie (Sigarg) +{ + Use_Sigarg; + sig_die ("Quit signal", 1); +} +#endif + + +static void +sigindie (Sigarg) +{ + Use_Sigarg; + sig_die ("Interrupt", 0); +} + +static void +sigtdie (Sigarg) +{ + Use_Sigarg; + sig_die ("Killed", 0); +} + +#ifdef SIGTRAP +static void +sigtrdie (Sigarg) +{ + Use_Sigarg; + sig_die ("Trace trap", 1); +} +#endif + + +void +f_setsig () +{ + signal1 (SIGFPE, sigfdie); /* ignore underflow, enable overflow */ +#ifdef SIGIOT + signal1 (SIGIOT, sigidie); +#endif +#ifdef SIGTRAP + signal1 (SIGTRAP, sigtrdie); +#endif +#ifdef SIGQUIT + if (signal1 (SIGQUIT, sigqdie) == SIG_IGN) + signal1 (SIGQUIT, SIG_IGN); +#endif + if (signal1 (SIGINT, sigindie) == SIG_IGN) + signal1 (SIGINT, SIG_IGN); + signal1 (SIGTERM, sigtdie); + +#ifdef pdp11 + ldfps (01200); /* detect overflow as an exception */ +#endif +} |