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