diff options
Diffstat (limited to 'libf2c/libF77/sig_die.c')
-rw-r--r-- | libf2c/libF77/sig_die.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libf2c/libF77/sig_die.c b/libf2c/libF77/sig_die.c new file mode 100644 index 00000000000..bebb1e7b8f7 --- /dev/null +++ b/libf2c/libF77/sig_die.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <signal.h> + +#ifndef SIGIOT +#ifdef SIGABRT +#define SIGIOT SIGABRT +#endif +#endif + +#ifdef KR_headers +void sig_die(s, kill) register char *s; int kill; +#else +#include <stdlib.h> +#ifdef __cplusplus +extern "C" { +#endif + extern void f_exit(void); + +void sig_die(register char *s, int kill) +#endif +{ + /* print error message, then clear buffers */ + fprintf(stderr, "%s\n", s); + + if(kill) + { + fflush(stderr); + f_exit(); + fflush(stderr); + /* now get a core */ +#ifdef SIGIOT + signal(SIGIOT, SIG_DFL); +#endif + abort(); + } + else { +#ifdef NO_ONEXIT + f_exit(); +#endif + exit(1); + } + } +#ifdef __cplusplus +} +#endif |