> 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.

Reply via email to