Commit | Line | Data |
---|---|---|
a15fc49a | 1 | /* groups.c 4.6 83/06/29 */ |
90aff665 BJ |
2 | |
3 | /* | |
4 | * groups | |
5 | */ | |
6 | ||
7 | #include <sys/param.h> | |
8 | #include <grp.h> | |
9 | #include <pwd.h> | |
10 | ||
933c83d0 | 11 | int groups[NGROUPS]; |
90aff665 BJ |
12 | |
13 | main(argc, argv) | |
14 | int argc; | |
15 | char *argv[]; | |
16 | { | |
a15fc49a | 17 | int ngroups, i; |
90aff665 | 18 | char *sep = ""; |
a15fc49a | 19 | struct group *gr; |
90aff665 | 20 | |
a15fc49a SL |
21 | if (argc > 1) |
22 | showgroups(argv[1]); | |
a43be079 SL |
23 | ngroups = getgroups(NGROUPS, groups); |
24 | for (i = 0; i < ngroups; i++) { | |
25 | gr = getgrgid(groups[i]); | |
26 | if (gr == NULL) | |
27 | printf("%s%d", sep, groups[i]); | |
28 | else | |
29 | printf("%s%s", sep, gr->gr_name); | |
30 | sep = " "; | |
31 | } | |
90aff665 BJ |
32 | printf("\n"); |
33 | exit(0); | |
34 | } | |
a15fc49a SL |
35 | |
36 | showgroups(user) | |
37 | register char *user; | |
38 | { | |
39 | register struct group *gr; | |
40 | register char **cp; | |
41 | char *sep = ""; | |
42 | ||
43 | while (gr = getgrent()) | |
44 | for (cp = gr->gr_mem; cp && *cp; cp++) | |
45 | if (strcmp(*cp, user) == 0) { | |
46 | printf("%s%s", sep, gr->gr_name); | |
47 | sep = " "; | |
48 | break; | |
49 | } | |
50 | printf("\n"); | |
51 | exit(0); | |
52 | } |