1*13440Ssam /* groups.c 4.6 83/06/29 */ 26013Swnj 36013Swnj /* 46013Swnj * groups 56013Swnj */ 66013Swnj 76013Swnj #include <sys/param.h> 86013Swnj #include <grp.h> 96013Swnj #include <pwd.h> 106013Swnj 1111072Smckusick int groups[NGROUPS]; 126013Swnj 136013Swnj main(argc, argv) 146013Swnj int argc; 156013Swnj char *argv[]; 166013Swnj { 17*13440Ssam int ngroups, i; 186013Swnj char *sep = ""; 19*13440Ssam struct group *gr; 206013Swnj 21*13440Ssam if (argc > 1) 22*13440Ssam showgroups(argv[1]); 239249Ssam ngroups = getgroups(NGROUPS, groups); 249249Ssam for (i = 0; i < ngroups; i++) { 259249Ssam gr = getgrgid(groups[i]); 269249Ssam if (gr == NULL) 279249Ssam printf("%s%d", sep, groups[i]); 289249Ssam else 299249Ssam printf("%s%s", sep, gr->gr_name); 309249Ssam sep = " "; 319249Ssam } 326013Swnj printf("\n"); 336013Swnj exit(0); 346013Swnj } 35*13440Ssam 36*13440Ssam showgroups(user) 37*13440Ssam register char *user; 38*13440Ssam { 39*13440Ssam register struct group *gr; 40*13440Ssam register char **cp; 41*13440Ssam char *sep = ""; 42*13440Ssam 43*13440Ssam while (gr = getgrent()) 44*13440Ssam for (cp = gr->gr_mem; cp && *cp; cp++) 45*13440Ssam if (strcmp(*cp, user) == 0) { 46*13440Ssam printf("%s%s", sep, gr->gr_name); 47*13440Ssam sep = " "; 48*13440Ssam break; 49*13440Ssam } 50*13440Ssam printf("\n"); 51*13440Ssam exit(0); 52*13440Ssam } 53