Subject: XOPEN_SOURCE
To: None <current-users@netbsd.org>
From: Patrick Welche <prlw1@newn.cam.ac.uk>
List: current-users
Date: 01/31/2000 22:29:29
What is the meaning of XOPEN_SOURCE? Some autoconf/configure or whatever
utility decided that a i386 running today's current was

#define __EXTENSIONS__  1
#define _POSIX_C_SOURCE  199506L
#define _XOPEN_SOURCE  500
#define _XOPEN_SOURCE_EXTENDED  1

which leads to the following problem:

unistd.h declares:

Ah - got it - not obvious, just 2 characters difference ...

/* FIXME: this should go to <sys/time.h>! */
#if __STDC__
struct timeval;                         /* select(2) XXX */
#endif
int      select __P((int, fd_set *, fd_set *, fd_set *, struct timeval *));
#endif /* (!defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)) || ... */

but that last comment beside the #endif isn't actually true.. it matches

#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
                    ^^

_C

but the definition of fd_set in sys/types.h is defended by

#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)

(no _C) => there is an inconsistency. (end result: ImageMagick doesn't
compile...)

What is right? _C or no _C? or both?

Cheers,

Patrick