diff options
Diffstat (limited to 'contrib/libf2c/libF77/sig_die.c')
-rw-r--r-- | contrib/libf2c/libF77/sig_die.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/libf2c/libF77/sig_die.c b/contrib/libf2c/libF77/sig_die.c new file mode 100644 index 0000000..622462e --- /dev/null +++ b/contrib/libf2c/libF77/sig_die.c @@ -0,0 +1,37 @@ +#include <stdio.h> +#include <signal.h> + +#ifndef SIGIOT +#ifdef SIGABRT +#define SIGIOT SIGABRT +#endif +#endif + +#include <stdlib.h> +extern void f_exit (void); + +void +sig_die (register char *s, int kill) +{ + /* 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); + } +} |