summaryrefslogtreecommitdiffstats
path: root/Parser/intrcheck.c
diff options
context:
space:
mode:
Diffstat (limited to 'Parser/intrcheck.c')
-rw-r--r--Parser/intrcheck.c17
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