diff options
author | Jeff Law <law@gcc.gnu.org> | 1998-01-31 18:37:08 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-01-31 18:37:08 -0700 |
commit | 81fea2b1d147752f431b46c08f4c12a18a2d78bc (patch) | |
tree | 4b30cdf598ee6a8b24903fba52bb3e0c06bf459b /libf2c/libF77/sig_die.c | |
parent | 0dfb6849ef1d4c8b5bf178d7add69ab297fab8fa (diff) | |
download | gcc-81fea2b1d147752f431b46c08f4c12a18a2d78bc.tar.gz |
* Previous contents of gcc/f/runtime moved into toplevel
"libf2c" directory.
From-SVN: r17568
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 |