1 /* vi: set sw=4 ts=4: */
3 * setgroups() for uClibc
5 * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
7 * GNU Library General Public License (LGPL) version 2 or later.
15 libc_hidden_proto(sysconf)
17 #define __NR___syscall_setgroups __NR_setgroups
18 static inline _syscall2(int, __syscall_setgroups,
19 size_t, size, const __kernel_gid_t *, list);
21 int setgroups(size_t size, const gid_t *groups)
23 if (size > (size_t) sysconf(_SC_NGROUPS_MAX)) {
29 __kernel_gid_t *kernel_groups = NULL;
32 kernel_groups = (__kernel_gid_t *)malloc(sizeof(*kernel_groups) * size);
33 if (kernel_groups == NULL)
37 for (i = 0; i < size; i++) {
38 kernel_groups[i] = (groups)[i];
39 if (groups[i] != (gid_t) ((__kernel_gid_t) groups[i])) {
44 i = __syscall_setgroups(size, kernel_groups);
50 libc_hidden_proto(setgroups)
51 libc_hidden_def(setgroups)