Patch #975056 - fixes for restartable signals on *BSD. In addition,
a few remaining calls to signal() were converted to PyOS_setsig().
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 @@
 		Py_Exit(1);
 		break;
 	}
-	signal(SIGINT, intcatcher);
+	PyOS_setsig(SIGINT, intcatcher);
 	Py_AddPendingCall(checksignals_witharg, NULL);
 }
 
@@ -146,23 +146,14 @@
 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