> Date: Thu, 03 Jan 2013 16:10:02 -0500 > From: "Todd C. Miller" <todd.mil...@courtesan.com> > > On Thu, 03 Jan 2013 13:42:06 EST, "Todd C. Miller" wrote: > > > On Wed, 02 Jan 2013 20:03:32 -0430, Andres Perera wrote: > > > > > `gcc -ansi` defines __STRICT_ANSI which could be checked before > > > setting __POSIX_VISIBLE >= 200809 in <sys/cdefs.h> > > > > It probably makes the most sense to simply convert __STRICT_ANSI > > to _ANSI_SOURCE. > > Something like this for example. > > - todd > > Index: sys/sys/cdefs.h > =================================================================== > RCS file: /home/cvs/openbsd/src/sys/sys/cdefs.h,v > retrieving revision 1.34 > diff -u -r1.34 cdefs.h > --- sys/sys/cdefs.h 14 Aug 2012 20:11:37 -0000 1.34 > +++ sys/sys/cdefs.h 3 Jan 2013 21:06:44 -0000 > @@ -357,9 +357,17 @@ > #endif > > /* > - * _ANSI_SOURCE means to expose ANSI C89 interfaces only. > + * GCC defines __STRICT_ANSI when -ansi, -std=c89 or -std=c99 is specified. > + * In the case of -std=c99, __STDC_VERSION__ will be set to 199901. > + */ > +#if defined(__STRICT_ANSI) && !defined(_ANSI_SOURCE) > +# define _ANSI_SOURCE 1 > +#endif
I don't think we should define _ANSI_SOURCE in our headers; I've had the following diff in one of my trees for a while. There's some fallout in xenocara/dist/Mesa though. And I suspect there will be some ports issues as well. So we probably want to leave this alone until after the next release. Index: cdefs.h =================================================================== RCS file: /cvs/src/sys/sys/cdefs.h,v retrieving revision 1.34 diff -u -p -r1.34 cdefs.h --- cdefs.h 14 Aug 2012 20:11:37 -0000 1.34 +++ cdefs.h 25 Jan 2013 19:01:57 -0000 @@ -361,8 +361,8 @@ * If the user defines it in addition to one of the POSIX or XOPEN * macros, assume the POSIX/XOPEN macro(s) should take precedence. */ -#if defined(_ANSI_SOURCE) && !defined(__POSIX_VISIBLE) && \ - !defined(__XPG_VISIBLE) +#if (defined(_ANSI_SOURCE) || defined(__STRICT_ANSI__)) && \ + !defined(__POSIX_VISIBLE) && !defined(__XPG_VISIBLE) # define __POSIX_VISIBLE 0 # define __XPG_VISIBLE 0 # define __ISO_C_VISIBLE 1990 @@ -385,7 +385,8 @@ * macros is defined or if the user explicitly asks for them. */ #if !defined(_BSD_SOURCE) && \ - (defined(_ANSI_SOURCE) || defined(__XPG_VISIBLE) || defined(__POSIX_VISIBLE)) + (defined(_ANSI_SOURCE) || defined(__STRICT_ANSI__) || \ + defined(__XPG_VISIBLE) || defined(__POSIX_VISIBLE)) # define __BSD_VISIBLE 0 #endif