Date: Mon, 25 Apr 2011 08:15:50 GMT From: Robert Andersson <streambag@streambag.se> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/156637: sys/types.h can't be included when _XOPEN_SOURCE is defined Message-ID: <201104250815.p3P8FoLj030509@red.freebsd.org> Resent-Message-ID: <201104250820.p3P8KImM028888@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 156637 >Category: misc >Synopsis: sys/types.h can't be included when _XOPEN_SOURCE is defined >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Apr 25 08:20:18 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Robert Andersson >Release: FreeBSD 8.2-RELEASE i386 >Organization: >Environment: System: FreeBSD maya 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011 root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >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 >How-To-Repeat: Try to compile the following code: #define _XOPEN_SOURCE 500 #include <sys/file.h> int main(int argc, char *argv[]) { return 0; } >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. >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104250815.p3P8FoLj030509>