diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2013-11-27 15:58:03 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2013-11-27 15:58:03 -0800 |
commit | de27f8abfdf28005f578e316321e823337fecae3 (patch) | |
tree | 9f44d4382072bbd3b5f617720ccf5a05fbd9b5c0 /lib | |
parent | 336b7334b7730003c29fb51fcadabcf2442499ad (diff) |
Merge from gnulib, incorporating:
2013-11-13 getgroups: work around _DARWIN_C_SOURCE problem
* lib/getgroups.c: Update from gnulib.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/getgroups.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/getgroups.c b/lib/getgroups.c index e71b5439c7..482b24a788 100644 --- a/lib/getgroups.c +++ b/lib/getgroups.c @@ -43,6 +43,21 @@ getgroups (int n _GL_UNUSED, GETGROUPS_T *groups _GL_UNUSED) # define GETGROUPS_ZERO_BUG 0 # endif +/* On OS X 10.6 and later, use the usual getgroups, not the one + supplied when _DARWIN_C_SOURCE is defined. _DARWIN_C_SOURCE is + normally defined, since it means "conform to POSIX, but add + non-POSIX extensions even if that violates the POSIX namespace + rules", which is what we normally want. But with getgroups there + is an inconsistency, and _DARWIN_C_SOURCE means "change getgroups() + so that it no longer works right". The BUGS section of compat(5) + says that the behavior is dubious if you compile different sections + of a program with different _DARWIN_C_SOURCE settings, so fix only + the offending symbol. */ +# ifdef __APPLE__ +int posix_getgroups (int, gid_t []) __asm ("_getgroups"); +# define getgroups posix_getgroups +# endif + /* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, NULL) always fails. On other systems, it returns the number of supplemental groups for the process. This function handles that special case |