[PATCH] Do not define _XOPEN_SOURCE on MacOSX as it is too restricting there
- From
- Marco Roeland <marco.roeland@xs4all.nl>
- Date
- Dec 21, 2006, 10:39 UTC
- Message-ID
- <20061221103938.GA7055@fiberbit.xs4all.nl>
- In-Reply-To
- <caf068570612201735o776e01a8he2e9ab90fc2ee4f@mail.gmail.com>
Defining _XOPEN_SOURCE on Darwin always leads to a restricted set of available functions and symbols. This can not be cured by adding extra defines in any way. So there really is only the choice between _not_ defining this symbol on Mac OS X or restricting our usage of functions and symbols to the POSIX sets that are in term implied by _XOPEN_SOURCE. The first seems better.
Note the last three lines from this following literal code snippet in /usr/include/sys/cdefs.h from the Apple Darwin sources:
* By default newly complied code will actually get the same symbols * that the old code did. Defining any of _APPLE_C_SOURCE, _XOPEN_SOURCE, * or _POSIX_C_SOURCE will give you the new symbols. Defining _XOPEN_SOURCE * or _POSIX_C_SOURCE also restricts the avilable symbols to a subset of * Apple's APIs.
We want our symbols "avilable" so lets not use _XOPEN_SOURCE on Darwin!
The preferred way of checking specific Apple specific issues is by using the __APPLE__ predefined macro.
The extra define _XOPEN_SOURCE_EXTENDED does only affect some headers (like the /usr/include/curses.h header) and can stay.
Patch from Terje Sten Bjerkseth, only added a comment.
diff --git a/git-compat-util.h b/git-compat-util.h index bc296b3..f056d20 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -11,7 +11,11 @@ #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) +#if !defined __APPLE__ #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */ +#else + /* On Darwin defining _XOPEN_SOURCE always restricts available functions */ +#endif #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */ #define _GNU_SOURCE #define _BSD_SOURCE