|
|
if(error_sig >= 0) /* Ignore all second signals. */ | if(error_sig >= 0) /* Ignore all second signals. */ |
{ | { |
if(++signal_count > 10) /* Be safe. We will die if persistent enough. */ | if(++signal_count > 10) /* Be safe. We will die if persistent enough. */ |
|
#ifdef __FreeBSD__ |
(void) signal(sig, SIG_DFL); | (void) signal(sig, SIG_DFL); |
|
#else |
|
(void) sysv_signal(sig, SIG_DFL); |
|
#endif |
return; | return; |
} | } |
error_sig = sig; | error_sig = sig; |
|
|
) | ) |
{ | { |
if (death) | if (death) |
|
#ifdef __FreeBSD__ |
(void) signal(sig, SIG_IGN); /* Can't quit after death. */ | (void) signal(sig, SIG_IGN); /* Can't quit after death. */ |
|
#else |
|
(void) sysv_signal(sig, SIG_IGN); /* Can't quit after death. */ |
|
#endif |
else if (!character_saved && character_generated) | else if (!character_saved && character_generated) |
{ | { |
if (!get_check("Really commit *Suicide*?")) | if (!get_check("Really commit *Suicide*?")) |
|
|
put_qio(); | put_qio(); |
error_sig = -1; | error_sig = -1; |
#ifdef USG | #ifdef USG |
|
#ifdef __FreeBSD__ |
(void) signal(sig, signal_handler);/* Have to restore handler. */ | (void) signal(sig, signal_handler);/* Have to restore handler. */ |
|
#else |
|
(void) sysv_signal(sig, signal_handler);/* Have to restore handler. */ |
|
#endif |
#else | #else |
(void) sigsetmask(smask); | (void) sigsetmask(smask); |
#endif | #endif |
|
|
restore_term(); | restore_term(); |
#if !defined(MSDOS) && !defined(AMIGA) && !defined(ATARIST_TC) | #if !defined(MSDOS) && !defined(AMIGA) && !defined(ATARIST_TC) |
/* always generate a core dump */ | /* always generate a core dump */ |
|
#ifdef __FreeBSD__ |
(void) signal(sig, SIG_DFL); | (void) signal(sig, SIG_DFL); |
|
#else |
|
(void) sysv_signal(sig, SIG_DFL); |
|
#endif |
(void) kill(getpid(), sig); | (void) kill(getpid(), sig); |
(void) sleep(5); | (void) sleep(5); |
#endif | #endif |
|
|
#if defined(atarist) && defined(__GNUC__) | #if defined(atarist) && defined(__GNUC__) |
(void) signal(SIGTSTP, (__Sigfunc)SIG_IGN); | (void) signal(SIGTSTP, (__Sigfunc)SIG_IGN); |
#else | #else |
|
#ifdef __FreeBSD__ |
(void) signal(SIGTSTP, SIG_IGN); | (void) signal(SIGTSTP, SIG_IGN); |
|
#else |
|
(void) sysv_signal(SIGTSTP, SIG_IGN); |
|
#endif |
#endif | #endif |
#ifndef USG | #ifndef USG |
mask = sigsetmask(0); | mask = sigsetmask(0); |
|
|
#ifdef __386BSD__ | #ifdef __386BSD__ |
(void) signal(SIGTSTP, (sig_t)suspend); | (void) signal(SIGTSTP, (sig_t)suspend); |
#else | #else |
|
#ifdef __FreeBSD__ |
(void) signal(SIGTSTP, suspend); | (void) signal(SIGTSTP, suspend); |
|
#else |
|
(void) sysv_signal(SIGTSTP, suspend); |
|
#endif |
#endif | #endif |
#endif | #endif |
#ifndef USG | #ifndef USG |
|
|
{ | { |
#if !defined(ATARIST_MWC) && !defined(ATARIST_TC) | #if !defined(ATARIST_MWC) && !defined(ATARIST_TC) |
/* No signals for Atari ST compiled with MWC or TC. */ | /* No signals for Atari ST compiled with MWC or TC. */ |
|
#ifdef __FreeBSD__ |
(void) signal(SIGINT, signal_handler); | (void) signal(SIGINT, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGINT, signal_handler); |
|
#endif |
| |
#if defined(atarist) && defined(__GNUC__) | #if defined(atarist) && defined(__GNUC__) |
/* Atari ST compiled with GNUC has most signals, but we need a cast | /* Atari ST compiled with GNUC has most signals, but we need a cast |
|
|
| |
#else | #else |
/* Everybody except the atari st. */ | /* Everybody except the atari st. */ |
|
#ifdef __FreeBSD__ |
(void) signal(SIGINT, signal_handler); | (void) signal(SIGINT, signal_handler); |
(void) signal(SIGFPE, signal_handler); | (void) signal(SIGFPE, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGINT, signal_handler); |
|
(void) sysv_signal(SIGFPE, signal_handler); |
|
#endif |
| |
#if defined(MSDOS) | #if defined(MSDOS) |
/* many fewer signals under MSDOS */ | /* many fewer signals under MSDOS */ |
|
|
| |
/* Everybody except Atari, MSDOS, and Amiga. */ | /* Everybody except Atari, MSDOS, and Amiga. */ |
/* Ignore HANGUP, and let the EOF code take care of this case. */ | /* Ignore HANGUP, and let the EOF code take care of this case. */ |
|
#ifdef __FreeBSD__ |
(void) signal(SIGHUP, SIG_IGN); | (void) signal(SIGHUP, SIG_IGN); |
(void) signal(SIGQUIT, signal_handler); | (void) signal(SIGQUIT, signal_handler); |
(void) signal(SIGILL, signal_handler); | (void) signal(SIGILL, signal_handler); |
(void) signal(SIGTRAP, signal_handler); | (void) signal(SIGTRAP, signal_handler); |
(void) signal(SIGIOT, signal_handler); | (void) signal(SIGIOT, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGHUP, SIG_IGN); |
|
(void) sysv_signal(SIGQUIT, signal_handler); |
|
(void) sysv_signal(SIGILL, signal_handler); |
|
(void) sysv_signal(SIGTRAP, signal_handler); |
|
(void) sysv_signal(SIGIOT, signal_handler); |
|
#endif |
#ifdef SIGEMT /* in BSD systems */ | #ifdef SIGEMT /* in BSD systems */ |
(void) signal(SIGEMT, signal_handler); | (void) signal(SIGEMT, signal_handler); |
#endif | #endif |
#ifdef SIGDANGER /* in SYSV systems */ | #ifdef SIGDANGER /* in SYSV systems */ |
(void) signal(SIGDANGER, signal_handler); | (void) signal(SIGDANGER, signal_handler); |
#endif | #endif |
|
#ifdef __FreeBSD__ |
(void) signal(SIGKILL, signal_handler); | (void) signal(SIGKILL, signal_handler); |
(void) signal(SIGBUS, signal_handler); | (void) signal(SIGBUS, signal_handler); |
(void) signal(SIGSEGV, signal_handler); | (void) signal(SIGSEGV, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGKILL, signal_handler); |
|
(void) sysv_signal(SIGBUS, signal_handler); |
|
(void) sysv_signal(SIGSEGV, signal_handler); |
|
#endif |
#ifdef SIGSYS | #ifdef SIGSYS |
|
#ifdef __FreeBSD__ |
(void) signal(SIGSYS, signal_handler); | (void) signal(SIGSYS, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGSYS, signal_handler); |
|
#endif |
#endif | #endif |
|
#ifdef __FreeBSD__ |
(void) signal(SIGTERM, signal_handler); | (void) signal(SIGTERM, signal_handler); |
(void) signal(SIGPIPE, signal_handler); | (void) signal(SIGPIPE, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGTERM, signal_handler); |
|
(void) sysv_signal(SIGPIPE, signal_handler); |
|
#endif |
#ifdef SIGXCPU /* BSD */ | #ifdef SIGXCPU /* BSD */ |
|
#ifdef __FreeBSD__ |
(void) signal(SIGXCPU, signal_handler); | (void) signal(SIGXCPU, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGXCPU, signal_handler); |
|
#endif |
#endif | #endif |
#ifdef SIGPWR /* SYSV */ | #ifdef SIGPWR /* SYSV */ |
|
#ifdef __FreeBSD__ |
(void) signal(SIGPWR, signal_handler); | (void) signal(SIGPWR, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGPWR, signal_handler); |
|
#endif |
#endif | #endif |
#endif | #endif |
#endif | #endif |
|
|
#if !defined(ATARIST_MWC) | #if !defined(ATARIST_MWC) |
(void) signal(SIGINT, SIG_IGN); | (void) signal(SIGINT, SIG_IGN); |
#ifdef SIGQUIT | #ifdef SIGQUIT |
|
#ifdef __FreeBSD__ |
(void) signal(SIGQUIT, SIG_IGN); | (void) signal(SIGQUIT, SIG_IGN); |
|
#else |
|
(void) sysv_signal(SIGQUIT, SIG_IGN); |
|
#endif |
#endif | #endif |
#endif | #endif |
} | } |
|
|
#if !defined(ATARIST_MWC) | #if !defined(ATARIST_MWC) |
(void) signal(SIGINT, SIG_DFL); | (void) signal(SIGINT, SIG_DFL); |
#ifdef SIGQUIT | #ifdef SIGQUIT |
|
#ifdef __FreeBSD__ |
(void) signal(SIGQUIT, SIG_DFL); | (void) signal(SIGQUIT, SIG_DFL); |
|
#else |
|
(void) sysv_signal(SIGQUIT, SIG_DFL); |
|
#endif |
#endif | #endif |
#endif | #endif |
} | } |
|
|
#if defined(atarist) && defined(__GNUC__) | #if defined(atarist) && defined(__GNUC__) |
(void) signal(SIGINT, (__Sigfunc)signal_handler); | (void) signal(SIGINT, (__Sigfunc)signal_handler); |
#else | #else |
|
#ifdef __FreeBSD__ |
(void) signal(SIGINT, signal_handler); | (void) signal(SIGINT, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGINT, signal_handler); |
|
#endif |
#endif | #endif |
#ifdef SIGQUIT | #ifdef SIGQUIT |
#if defined(atarist) && defined(__GNUC__) | #if defined(atarist) && defined(__GNUC__) |
(void) signal(SIGQUIT, (__Sigfunc)signal_handler); | (void) signal(SIGQUIT, (__Sigfunc)signal_handler); |
#else | #else |
|
#ifdef __FreeBSD__ |
(void) signal(SIGQUIT, signal_handler); | (void) signal(SIGQUIT, signal_handler); |
|
#else |
|
(void) sysv_signal(SIGQUIT, signal_handler); |
|
#endif |
#endif | #endif |
#endif | #endif |
#endif | #endif |