diff options
Diffstat (limited to 'Parser/intrcheck.c')
-rw-r--r-- | Parser/intrcheck.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c index f7434af..e0f3252 100644 --- a/Parser/intrcheck.c +++ b/Parser/intrcheck.c @@ -137,7 +137,7 @@ intcatcher(int sig) Py_Exit(1); break; } - signal(SIGINT, intcatcher); + PyOS_setsig(SIGINT, intcatcher); Py_AddPendingCall(checksignals_witharg, NULL); } @@ -146,23 +146,14 @@ static void (*old_siginthandler)(int) = SIG_DFL; void PyOS_InitInterrupts(void) { - if ((old_siginthandler = signal(SIGINT, SIG_IGN)) != SIG_IGN) - signal(SIGINT, intcatcher); -#ifdef HAVE_SIGINTERRUPT - /* This is for SunOS and other modern BSD derivatives. - It means that system calls (like read()) are not restarted - after an interrupt. This is necessary so interrupting a - read() or readline() call works as expected. - XXX On old BSD (pure 4.2 or older) you may have to do this - differently! */ - siginterrupt(SIGINT, 1); -#endif /* HAVE_SIGINTERRUPT */ + if ((old_siginthandler = PyOS_setsig(SIGINT, SIG_IGN)) != SIG_IGN) + PyOS_setsig(SIGINT, intcatcher); } void PyOS_FiniInterrupts(void) { - signal(SIGINT, old_siginthandler); + PyOS_setsig(SIGINT, old_siginthandler); } int |