Subject: Re: _POSIX_C_SOURCE 199309L and when to use _NETBSD_SOURCE?
To: Ben Harris <bjh21@netbsd.org>
From: Jeremy C. Reed <reed@reedmedia.net>
List: current-users
Date: 12/18/2006 13:58:37
On Mon, 18 Dec 2006, Ben Harris wrote:

> >Are our headers broken? This is NetBSD/i386 3.99.24.
> >
> >> > /usr/include/unistd.h:321: error: expected declaration specifiers or '...' before 'u_int'
> >> > In file included from ../include/misc.h:143,
> >> >                  from utils.c:83:
> >> > /usr/include/stdlib.h:246: error: expected ')' before '*' token
> >
> >u_char is unknown. It is defined in /usr/include/sys/types.h:
> 
> I don't understand this.  Both of those lines are inside
> "#ifdef _NETBSD_SOURCE" blocks, so they shouldn't be visible unless 
> _NETBSD_SOURCE is defined, but if it were defined, <sys/types.h> would 
> have defined the requisite types.  This suggests to me that something, 
> maybe a badly broken system header or maybe your application, is 
> defining _NETBSD_SOURCE in between <sys/types.h> and <unistd.h>.

Thanks for the reply. I didn't look good enough above it and missed that.
Thanks.

I don't know why _NETBSD_SOURCE is defined there but not before.

> You might find it useful to use the -H option of GCC to find out 
> precisely which header files are being used and then search them for 
> mistaken definitions.

I am looking but no clear on all I am looking for.

Here is the gcc line adding the -H

 cc -H -DHAVE_CONFIG_H -I. -I../include -DGLX_GLXEXT_LEGACY 
-I/home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include 
-I/home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/freetype2 
-DHAVE_DIX_CONFIG_H -Wall -Wpointer-arith -Wstrict-prototypes 
-Wmissing-prototypes -Wmissing-declarations -Wnested-externs 
-fno-strict-aliasing -D_BSD_SOURCE -DHAS_FCHOWN -DHAS_STICKY_DIR_BIT 
-I../Xext -I../composite -I../damageext -I../xfixes -I../Xi -I../mi 
-I../miext/shadow -I../miext/damage -I../render -I../randr -I../fb -O2 


And the output:

. ../include/dix-config.h
. /usr/include/time.h
.. /usr/include/sys/cdefs.h
... /usr/include/machine/cdefs.h
... /usr/include/sys/cdefs_elf.h
.. /usr/include/sys/featuretest.h
.. /usr/include/machine/ansi.h
... /usr/include/machine/int_types.h
.. /usr/include/sys/null.h
.. /usr/include/sys/time.h
... /usr/include/sys/featuretest.h
... /usr/include/sys/types.h
.... /usr/include/sys/featuretest.h
.... /usr/include/machine/types.h
..... /usr/include/sys/featuretest.h
.... /usr/include/sys/ansi.h
.... /usr/include/machine/endian.h
..... /usr/include/sys/endian.h
...... /usr/include/sys/featuretest.h
...... /usr/include/machine/endian_machdep.h
... /usr/include/time.h
. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xos.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xosdefs.h
.. /usr/include/string.h
... /usr/include/sys/featuretest.h
... /usr/include/strings.h
.... /usr/include/sys/featuretest.h
.... /usr/include/string.h
.. /usr/include/fcntl.h
... /usr/include/sys/featuretest.h
... /usr/include/sys/stat.h
.... /usr/include/sys/featuretest.h
.. /usr/include/unistd.h
... /usr/include/sys/featuretest.h
... /usr/include/sys/unistd.h
.... /usr/include/sys/featuretest.h
In file included from /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xos.h:168,
                 from utils.c:81:
/usr/include/unistd.h:321: error: expected declaration specifiers or '...' before 'u_long'
/usr/include/unistd.h:321: error: expected declaration specifiers or '...' before 'u_int'
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xarch.h
. /usr/include/stdio.h
.. /usr/include/sys/featuretest.h
. ../include/misc.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xfuncproto.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xmd.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/X.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xdefs.h
.. /usr/include/stddef.h
.. ../include/os.h
... ../include/misc.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xalloca.h
... /usr/include/stdarg.h
.... /usr/include/sys/featuretest.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xfuncs.h
.. /usr/include/stdlib.h
... /usr/include/sys/featuretest.h
In file included from ../include/misc.h:143,
                 from utils.c:83:
/usr/include/stdlib.h:246: error: expected ')' before '*' token
.. /usr/include/limits.h
... /usr/include/sys/featuretest.h
... /usr/include/machine/limits.h
.... /usr/include/sys/featuretest.h
... /usr/include/sys/syslimits.h
.... /usr/include/sys/featuretest.h
.. /usr/include/math.h
... /usr/include/sys/featuretest.h
... /usr/include/machine/math.h
.... /usr/include/x86/math.h
.. /usr/include/assert.h
... /usr/include/sys/featuretest.h
.. /usr/include/ctype.h
... /usr/include/sys/featuretest.h
. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xtrans/Xtrans.h
.. /usr/include/sys/socket.h
... /usr/include/sys/featuretest.h
... /usr/include/sys/uio.h
.... /usr/include/sys/featuretest.h
. ../include/input.h
.. ../include/screenint.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xproto.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xprotostr.h
.. ../include/window.h
... ../include/region.h
.... ../include/regionstr.h
..... ../include/miscstruct.h
...... ../include/gc.h
....... ../include/pixmap.h
. ../include/dixfont.h
.. ../include/dix.h
... ../include/input.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/fonts/font.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/fonts/fsmasks.h
.. ../include/closure.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/fonts/fontstruct.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/fonts/font.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/fonts/fontproto.h
. osdep.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xdmcp.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xpoll.h
... /usr/include/sys/select.h
.... /usr/include/sys/featuretest.h
.... /usr/include/sys/fd_set.h
..... /usr/include/sys/featuretest.h
.... /usr/include/sys/sigtypes.h
..... /usr/include/sys/featuretest.h
... /usr/include/sys/param.h
.... /usr/include/sys/inttypes.h
..... /usr/include/sys/stdint.h
...... /usr/include/machine/int_mwgwtypes.h
...... /usr/include/machine/int_limits.h
...... /usr/include/machine/int_const.h
...... /usr/include/machine/wchar_limits.h
..... /usr/include/machine/int_fmtio.h
.... /usr/include/sys/signal.h
..... /usr/include/sys/featuretest.h
..... /usr/include/sys/siginfo.h
...... /usr/include/machine/signal.h
....... /usr/include/sys/featuretest.h
....... /usr/include/machine/trap.h
........ /usr/include/x86/trap.h
..... /usr/include/sys/ucontext.h
...... /usr/include/machine/mcontext.h
.... /usr/include/machine/param.h
.. ../include/dix.h
. ../include/extension.h
. /usr/include/signal.h
.. /usr/include/sys/featuretest.h
In file included from utils.c:102:
/usr/include/signal.h:69: error: expected ')' before 'int'
. /usr/include/sys/wait.h
.. /usr/include/sys/featuretest.h
In file included from utils.c:107:
/usr/include/sys/wait.h:135: error: duplicate member 'w_Filler'
/usr/include/sys/wait.h:136: error: duplicate member 'w_Retcode'
/usr/include/sys/wait.h:136: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:137: error: duplicate member 'w_Coredump'
/usr/include/sys/wait.h:137: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:137: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:138: error: duplicate member 'w_Termsig'
/usr/include/sys/wait.h:138: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:138: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:138: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:153: error: duplicate member 'w_Filler'
/usr/include/sys/wait.h:154: error: duplicate member 'w_Stopsig'
/usr/include/sys/wait.h:154: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:155: error: duplicate member 'w_Stopval'
/usr/include/sys/wait.h:155: error: duplicate member '({anonymous})'
/usr/include/sys/wait.h:155: error: duplicate member '({anonymous})'
. /usr/include/sys/resource.h
.. /usr/include/sys/featuretest.h
. /usr/include/netdb.h
.. /usr/include/machine/endian_machdep.h
.. /usr/include/sys/featuretest.h
.. /usr/include/inttypes.h
. ../include/opaque.h
.. ../include/globals.h
. ../include/dixstruct.h
.. ../include/resource.h
.. ../include/cursor.h
. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/extensions/XKBsrv.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/extensions/XKBstr.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/extensions/XKB.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/extensions/XKBproto.h
.. ../include/inputstr.h
... ../include/dixstruct.h
. ../Xext/securitysrv.h
.. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/extensions/security.h
... /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xauth.h
.. ../include/input.h
.. ../include/property.h
.. ../include/pixmap.h
.. ../include/resource.h
. ../render/picture.h
. /home/packages/tmp-pkgsrc/new/modular-xorg-server/work.glacier/.buildlink/include/X11/Xos_r.h
. /usr/include/errno.h
.. /usr/include/sys/errno.h
.. /usr/include/sys/featuretest.h
utils.c: In function 'GetTimeInMillis':
utils.c:562: warning: implicit declaration of function 'gettimeofday'
utils.c:562: warning: nested extern declaration of 'gettimeofday'
utils.c: In function 'SmartScheduleStopTimer':
utils.c:1558: warning: implicit declaration of function 'setitimer'
utils.c:1558: warning: nested extern declaration of 'setitimer'