#include "stdio.h" #include "signal.h" #ifndef SIGIOT #ifdef SIGABRT #define SIGIOT SIGABRT #endif #endif #include "stdlib.h" #ifdef __cplusplus extern "C" { #endif extern void f_exit(void); void sig_die(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); } } #ifdef __cplusplus } #endif