- if (agroup >= 0)
- groups[ngroups++] = agroup;
- setgrent();
- while (grp = getgrent())
- for (i = 0; grp->gr_mem[i]; i++)
- if (!strcmp(grp->gr_mem[i], uname)) {
- groups[ngroups++] = grp->gr_gid;
- if (ngroups == NGROUPS) {
-fprintf(stderr, "inigrp: %s is in too many groups\n", uname);
- goto toomany;
- }
- }
-toomany:
+ ngroups = NGROUPS;
+ if (getgrouplist(uname, agroup, groups, &ngroups) < 0)
+ fprintf(stderr,
+ "initgroups: %s is in too many groups, using first %d\n",
+ uname, ngroups);