diff options
author | Mike Frysinger <vapier@gentoo.org> | 2006-02-10 04:15:23 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2006-02-10 04:15:23 +0000 |
commit | c7dec4ce777a04faffdc5f36500474118f854550 (patch) | |
tree | 23f576b5d1f3282e407e2d551d2d9700e6b3d074 /libc/sysdeps/linux | |
parent | 0ebdd0e14d638c32cfc62d8dd959ccea9e25bfd2 (diff) |
add support for newer [sg]etgroups function and make the function a simple passthrough on 64bit arches (should fix the getgroup crashes in ltp)
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r-- | libc/sysdeps/linux/common/getgroups.c | 13 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/setgroups.c | 12 |
2 files changed, 24 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/common/getgroups.c b/libc/sysdeps/linux/common/getgroups.c index a922b7cd6..6903ed14f 100644 --- a/libc/sysdeps/linux/common/getgroups.c +++ b/libc/sysdeps/linux/common/getgroups.c @@ -14,8 +14,17 @@ libc_hidden_proto(getgroups) -libc_hidden_proto(sysconf) +#if defined(__NR_getgroups32) +# undef __NR_getgroups +# define __NR_getgroups __NR_getgroups32 +_syscall2(int, getgroups, int, size, gid_t *, list); + +#elif __WORDSIZE == 64 +_syscall2(int, getgroups, int, size, gid_t *, list); + +#else +libc_hidden_proto(sysconf) #define MIN(a,b) (((a)<(b))?(a):(b)) #define __NR___syscall_getgroups __NR_getgroups @@ -49,4 +58,6 @@ ret_error: return ngids; } } +#endif + libc_hidden_def(getgroups) diff --git a/libc/sysdeps/linux/common/setgroups.c b/libc/sysdeps/linux/common/setgroups.c index b767f6aa7..dd1a03f38 100644 --- a/libc/sysdeps/linux/common/setgroups.c +++ b/libc/sysdeps/linux/common/setgroups.c @@ -14,6 +14,16 @@ libc_hidden_proto(setgroups) +#if defined(__NR_setgroups32) +# undef __NR_setgroups +# define __NR_setgroups __NR_setgroups32 +_syscall2(int, setgroups, size_t, size, const gid_t *, list); + +#elif __WORDSIZE == 64 +_syscall2(int, setgroups, size_t, size, const gid_t *, list); + +#else + libc_hidden_proto(sysconf) #define __NR___syscall_setgroups __NR_setgroups @@ -49,4 +59,6 @@ ret_error: return i; } } +#endif + libc_hidden_def(setgroups) |