Use PyOS_setsig() instead of signal(). Also remove redundant spaces

from the FreeBSD code.
This commit is contained in:
Guido van Rossum 2000-09-21 14:32:04 +00:00
parent b798c0109f
commit cf06571a8b

View File

@ -130,7 +130,7 @@ static void fpe_reset(Sigfunc *handler)
(user_routine *)0,
_ABORT_ON_ERROR,
NULL);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- SunOS and Solaris ----------------------------------------------------*/
#elif defined(sun)
@ -144,7 +144,7 @@ static void fpe_reset(Sigfunc *handler)
(void) nonstandard_arithmetic();
(void) ieee_flags("clearall",mode,in,&out);
(void) ieee_handler("set","common",(sigfpe_handler_type)handler);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- HPUX -----------------------------------------------------------------*/
#elif defined(__hppa) || defined(hppa)
@ -153,7 +153,7 @@ static void fpe_reset(Sigfunc *handler)
/* ld -b -o fpectlmodule.sl fpectlmodule.o -lm */
#include <math.h>
fpsetdefaults();
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- IBM AIX --------------------------------------------------------------*/
#elif defined(__AIX) || defined(_AIX)
@ -161,7 +161,7 @@ static void fpe_reset(Sigfunc *handler)
#include <fptrap.h>
fp_trap(FP_TRAP_SYNC);
fp_enable(TRP_INVALID | TRP_DIV_BY_ZERO | TRP_OVERFLOW);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- DEC ALPHA OSF --------------------------------------------------------*/
#elif defined(__alpha) && defined(__osf__)
@ -172,7 +172,7 @@ static void fpe_reset(Sigfunc *handler)
unsigned long fp_control =
IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF;
ieee_set_fp_control(fp_control);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- Cray Unicos ----------------------------------------------------------*/
#elif defined(cray)
@ -180,13 +180,13 @@ static void fpe_reset(Sigfunc *handler)
#ifdef HAS_LIBMSET
libmset(-1);
#endif
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- FreeBSD ----------------------------------------------------------------*/
#elif defined(__FreeBSD__)
fpresetsticky( fpgetsticky() );
fpsetmask( FP_X_INV | FP_X_DZ | FP_X_OFL );
signal( SIGFPE, handler );
fpresetsticky(fpgetsticky());
fpsetmask(FP_X_INV | FP_X_DZ | FP_X_OFL);
PyOS_setsig(SIGFPE, handler);
/*-- Linux ----------------------------------------------------------------*/
#elif defined(linux)
@ -196,13 +196,13 @@ static void fpe_reset(Sigfunc *handler)
#include <i386/fpu_control.h>
#endif
__setfpucw(0x1372);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- NeXT -----------------------------------------------------------------*/
#elif defined(NeXT) && defined(m68k) && defined(__GNUC__)
/* NeXT needs explicit csr set to generate SIGFPE */
asm("fmovel #0x1400,fpcr"); /* set OVFL and ZD bits */
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- Microsoft Windows, NT ------------------------------------------------*/
#elif defined(_MSC_VER)
@ -211,7 +211,7 @@ static void fpe_reset(Sigfunc *handler)
#include <float.h>
unsigned int cw = _EM_INVALID | _EM_ZERODIVIDE | _EM_OVERFLOW;
(void)_controlfp(0, cw);
signal(SIGFPE, handler);
PyOS_setsig(SIGFPE, handler);
/*-- Give Up --------------------------------------------------------------*/
#else
@ -223,12 +223,12 @@ static void fpe_reset(Sigfunc *handler)
static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args)
{
#ifdef __FreeBSD__
fpresetsticky( fpgetsticky() );
fpsetmask( 0 );
fpresetsticky(fpgetsticky());
fpsetmask(0);
#else
fputs("Operation not implemented\n", stderr);
#endif
Py_INCREF (Py_None);
Py_INCREF(Py_None);
return Py_None;
}