date and time created 83/08/11 20:49:31 by sam
[unix-history] / usr / src / old / groups / groups.c
CommitLineData
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 11int groups[NGROUPS];
90aff665
BJ
12
13main(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
36showgroups(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}