> Date: Sun, 20 Mar 2011 03:08:41 +0200 > From: Martynas Venckus <[email protected]> > > Index: include/fenv.h > =================================================================== > RCS file: include/fenv.h > diff -N include/fenv.h > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ include/fenv.h 18 Mar 2011 20:38:10 -0000 > @@ -0,0 +1,59 @@ > +/* $OpenBSD$ */ > +/* $NetBSD: fenv.h,v 1.2.4.1 2011/02/08 16:18:55 bouyer Exp $ */ > + > +/* > + * Copyright (c) 2010 The NetBSD Foundation, Inc. > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS > + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > LIMITED > + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR > + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS > + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > + * POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#ifndef _FENV_H_ > +#define _FENV_H_ > + > +#include <sys/cdefs.h> > +#include <machine/fenv.h> > + > +__BEGIN_DECLS > + > +int feclearexcept(int); > +int fegetexceptflag(fexcept_t *, int); > +int feraiseexcept(int); > +int fesetexceptflag(const fexcept_t *, int); > +int fetestexcept(int); > + > +int fegetround(void); > +int fesetround(int); > +int fegetenv(fenv_t *); > +int feholdexcept(fenv_t *); > +int fesetenv(const fenv_t *); > +int feupdateenv(const fenv_t *); > + > +#if __BSD_VISIBLE || defined(_GNU_SOURCE) > +int feenableexcept(int mask); > +int fedisableexcept(int mask); > +int fegetexcept(void); > +#endif /* __BSD_VISIBLE || defined(_GNU_SOURCE) */
I think we should leave off the || defined(_GNU_SOURCE) bit here. Nowhere else in our system headers do we care about GNU extensions. And if we would care about them, we probably should introduce __GNU_VISIBLE and set it appropriately in <sys/cdefs.h> based on whether _GNU_SOURCE is defined or not. But since _GNU_SOURCE seems to imply BSD extensions on Linux, I think just checking __BSD_VISIBLE is the right thing to do.
