Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Apr 2011 09:20:12 GMT
From:      Bruce Evans <brde@optusnet.com.au>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: misc/156637: sys/types.h can't be included when _XOPEN_SOURCE is defined
Message-ID:  <201104250920.p3P9KCqa084984@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR misc/156637; it has been noted by GNATS.

From: Bruce Evans <brde@optusnet.com.au>
To: Robert Andersson <streambag@streambag.se>
Cc: freebsd-gnats-submit@freebsd.org, freebsd-bugs@freebsd.org
Subject: Re: misc/156637: sys/types.h can't be included when _XOPEN_SOURCE
 is defined
Date: Mon, 25 Apr 2011 19:10:00 +1000 (EST)

 On Mon, 25 Apr 2011, Robert Andersson wrote:
 
 >
 >> Description:
 > When including <sys/file.h> with _XOPEN_SOURCE defined to 500 or higher, compila
 > tion will fail with a message similar to this one (using clang, gcc fails with a
 > similar message):
 >
 > In file included from main.c:3:
 > /usr/include/sys/file.h:161:2: error: unknown type name 'u_int'
 >        u_int   xf_flag;        /* flags (see fcntl.h) */
 >
 > u_int is defined in types.h, but it is wrapped in a #if __BSD_VISIBLE.
 >
 > __BSD_VISIBLE is defined in cdefs.h only if _POSIX_C_SOURCE is not defined (whic
 > h it is if _XOPEN_SOURCE is defined).
 >
 > I found the following (short) thread about this problem from 2009:
 > http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg69469.html
 >
 > ...
 >> Fix:
 > I'm not sure what the correct solution is. Any one of the following would solve the problem:
 > * sys/file.h should not use u_int
 > * The relevant parts of sys/file.h should be wrapped in #if __BSD_VISIBLE
 > * The definition of u_int should not be wrapped in #if __BSD_VISIBLE
 > * _XOPEN_SOURCE >= 500 should not imply _POSIX_C_SOURCE
 > * _POSIX_C_SOURCE should not stop __BSD_VISIBLE from being defined.
 
 I've used the following fix (the first of the above) for 10 years or
 so (it got lost in fixes for mounds of style bugs in <sys/file.h>).
 I didn't notice it in connection with _XOPEN_SOURCE, but by general
 principles.
 
 % Index: file.h
 % ===================================================================
 % RCS file: /home/ncvs/src/sys/sys/file.h,v
 % retrieving revision 1.65
 % diff -u -2 -r1.65 file.h
 % --- file.h	19 Jun 2004 11:38:00 -0000	1.65
 % +++ file.h	20 Jun 2004 02:11:04 -0000
 % @@ -151,5 +142,5 @@
 %  	void	*xf_data;	/* file descriptor specific data */
 %  	void	*xf_vnode;	/* vnode pointer */
 % -	u_int	xf_flag;	/* flags (see fcntl.h) */
 % +	unsigned xf_flag;	/* flags (see fcntl.h) */
 %  };
 %
 
 Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104250920.p3P9KCqa084984>