From: Guido van Rossum Date: Tue, 19 Sep 2000 13:35:40 +0000 (+0000) Subject: Randall Hopper: Add fpectl functionality patch for FreeBSD. X-Git-Tag: v2.0b2~202 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4622e146ee77148ddddf6ef1ecfcf306b5286262;p=thirdparty%2FPython%2Fcpython.git Randall Hopper: Add fpectl functionality patch for FreeBSD. --- diff --git a/Modules/fpectlmodule.c b/Modules/fpectlmodule.c index 039deb4dc46c..59d2b72bb129 100644 --- a/Modules/fpectlmodule.c +++ b/Modules/fpectlmodule.c @@ -68,6 +68,10 @@ extern "C" { #include "Python.h" #include +#if defined(__FreeBSD__) +# include +#endif + #ifndef WANT_SIGFPE_HANDLER /* Define locally if they are not defined in Python. This gives only * the limited control to induce a core dump in case of an exception. @@ -178,6 +182,12 @@ static void fpe_reset(Sigfunc *handler) #endif signal(SIGFPE, handler); +/*-- FreeBSD ----------------------------------------------------------------*/ +#elif defined(__FreeBSD__) + fpresetsticky( fpgetsticky() ); + fpsetmask( FP_X_INV | FP_X_DZ | FP_X_OFL ); + signal( SIGFPE, handler ); + /*-- Linux ----------------------------------------------------------------*/ #elif defined(linux) #ifdef __GLIBC__ @@ -212,7 +222,12 @@ static void fpe_reset(Sigfunc *handler) static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args) { +#ifdef __FreeBSD__ + fpresetsticky( fpgetsticky() ); + fpsetmask( 0 ); +#else fputs("Operation not implemented\n", stderr); +#endif Py_INCREF (Py_None); return Py_None; }