]> granicus.if.org Git - python/commitdiff
Add PyOS_getsig() and PyOS_setsig() -- wrappers around signal() or
authorGuido van Rossum <guido@python.org>
Sat, 16 Sep 2000 16:32:19 +0000 (16:32 +0000)
committerGuido van Rossum <guido@python.org>
Sat, 16 Sep 2000 16:32:19 +0000 (16:32 +0000)
sigaction() (if HAVE_SIGACTION is defined).

Python/pythonrun.c

index 924ebf33570761d309c50814acfdb725771a7709..e29e719d10946630fae582b493c5d2f8cb47573b 100644 (file)
@@ -1214,3 +1214,37 @@ PyOS_CheckStack(void)
 /* Alternate implementations can be added here... */
 
 #endif /* USE_STACKCHECK */
+
+
+/* Wrappers around sigaction() or signal(). */
+
+PyOS_sighandler_t
+PyOS_getsig(int sig)
+{
+#ifdef HAVE_SIGACTION
+       struct sigaction context;
+       sigaction(sig, NULL, &context);
+       return context.sa_handler;
+#else
+       PyOS_sighandler_t handler;
+       handler = signal(sig, SIG_IGN);
+       signal(sig, handler);
+       return handler;
+#endif
+}
+
+PyOS_sighandler_t
+PyOS_setsig(int sig, PyOS_sighandler_t handler)
+{
+#ifdef HAVE_SIGACTION
+       struct sigaction context;
+       PyOS_sighandler_t oldhandler;
+       sigaction(sig, NULL, &context);
+       oldhandler = context.sa_handler;
+       context.sa_handler = handler;
+       sigaction(sig, &context, NULL);
+       return oldhandler;
+#else
+       return signal(sig, handler);
+#endif
+}