1 |
/* Add gids implied by a user |
/* Add gids implied by a user |
2 |
|
|
3 |
Copyright (C) 1997 Free Software Foundation, Inc. |
Copyright (C) 1997, 2001 Free Software Foundation, Inc. |
4 |
|
|
5 |
Written by Miles Bader <miles@gnu.ai.mit.edu> |
Written by Miles Bader <miles@gnu.ai.mit.edu> |
6 |
|
|
56 |
else |
else |
57 |
{ |
{ |
58 |
struct idvec *cache = make_idvec (); |
struct idvec *cache = make_idvec (); |
59 |
#if 0 /* Glibc doesn't have getgrouplist yet. */ |
#ifdef HAVE_GETGROUPLIST |
60 |
gid_t _gids[NUM_STATIC_GIDS], *gids = _gids; |
gid_t _gids[NUM_STATIC_GIDS], *gids = _gids; |
61 |
size_t maxgids = NUM_STATIC_GIDS; |
int maxgids = NUM_STATIC_GIDS; |
62 |
size_t ngids = |
int ngids = getgrouplist (pw->pw_name, pw->pw_gid, gids, &maxgids); |
|
getgrouplist (pw->pw_name, pw->pw_gid, gids, &maxgids); |
|
63 |
|
|
64 |
if (ngids == -1) |
if (ngids == -1) |
65 |
{ |
{ |
80 |
free (gids); |
free (gids); |
81 |
} |
} |
82 |
#else |
#else |
83 |
|
#warning "getgrouplist() not available; supplementary group IDs unsupported." |
84 |
if (! cache) |
if (! cache) |
85 |
err = ENOMEM; |
err = ENOMEM; |
86 |
else |
else |