diff options
Diffstat (limited to 'otherlibs/unix/getgroups.c')
-rw-r--r-- | otherlibs/unix/getgroups.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/otherlibs/unix/getgroups.c b/otherlibs/unix/getgroups.c new file mode 100644 index 000000000..b5c1d52e4 --- /dev/null +++ b/otherlibs/unix/getgroups.c @@ -0,0 +1,29 @@ +#include <mlvalues.h> +#include <alloc.h> + +#ifdef HAS_GETGROUPS + +#include <sys/types.h> +#include <sys/param.h> +#include "unix.h" + +value unix_getgroups() /* ML */ +{ + int gidset[NGROUPS]; + int n; + value res; + int i; + + n = getgroups(NGROUPS, gidset); + if (n == -1) uerror("getgroups", Nothing); + res = alloc_tuple(n); + for (i = 0; i < n; i++) + Field(res, i) = Val_int(gidset[i]); + return res; +} + +#else + +value unix_getgroups() { invalid_argument("getgroups not implemented"); } + +#endif |