struct group * getgrgid(gid_t gid) { struct group *p_gr = (struct group*)_THREAD_PRIVATE(gr, _gr_group, NULL); struct group_storage *gs = (struct group_storage *)_THREAD_PRIVATE(gr_storage, gr_storage, NULL); return getgrgid_gs(gid, p_gr, gs); }
int getgrgid_r(gid_t gid, struct group *grp, char *buffer, size_t bufsize, struct group **result) { int errnosave; int ret; if (bufsize < GETGR_R_SIZE_MAX) return ERANGE; errnosave = errno; *result = getgrgid_gs(gid, grp, (struct group_storage *)buffer); if (*result == NULL) ret = errno; else ret = 0; errno = errnosave; return ret; }