On 07/22/11 17:23, Bruno Haible wrote: > The usual idiom in the MacOS X header files is > > #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) > > So, I expect that your change will be a no-op for almost everyone.
Thanks for the clarification. I looked through what I could glean from Google searches, and found some places that do not use the above pattern. For example, <http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/sys/select.h> says something like this: int pselect(int, fd_set * __restrict, fd_set * __restrict, fd_set * __restrict, const struct timespec * __restrict, const sigset_t * __restrict) #if defined(_DARWIN_C_SOURCE) || defined(_DARWIN_UNLIMITED_SELECT) __DARWIN_EXTSN_C(pselect) #else # if defined(__LP64__) && !__DARWIN_NON_CANCELABLE __DARWIN_1050(pselect) # else __DARWIN_ALIAS_C(pselect) # endif #endif ; and <http://www.opensource.apple.com/source/Libc/Libc-498.1.7/include/stdlib.h> says something like this: #if (__DARWIN_UNIX03 && !defined(_POSIX_C_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(_DARWIN_BETTER_REALPATH) char *realpath(const char * __restrict, char * __restrict) __DARWIN_EXTSN(realpath); #else char *realpath(const char * __restrict, char * __restrict) __DARWIN_ALIAS(realpath); #endif which suggests that realpath and pselect have "extended" runtime behavior if _DARWIN_C_SOURCE is defined. My guess is that these runtime differences are in the same spirit as _GNU_SOURCE, i.e., they enable desirable changes that POSIX would otherwise prohibit. If so, the patch should be kept. But if these changes are undesirable, the patch should be backed out.