6 int listgroups1(char *user)
13 pass = getpwnam(user);
15 initgroups(user, pass->pw_gid);
17 ngroups = getgroups(0, NULL);
19 grps = (gid_t *)malloc(ngroups * sizeof(gid_t));
21 getgroups(ngroups, grps);
23 grp = getgrgid(pass->pw_gid);
24 printf("%5d %s\n", pass->pw_gid, grp->gr_name);
26 for (i=0;i<ngroups;i++) {
27 grp = getgrgid(grps[i]);
28 printf("%5d %s\n", grps[i], grp->gr_name);
33 int listgroups2(char *user)
41 while ((grp = getgrent())) {
42 if (!grp->gr_mem) continue;
43 for (i=0; grp->gr_mem[i]; i++) {
44 if (strcmp(grp->gr_mem[i], user) == 0) {
45 printf("%s\n", grp->gr_name);
55 void listgroups3(char *domain)
58 int len = strlen(domain);
62 while ((grp = getgrent())) {
63 if (strncasecmp(grp->gr_name, domain, len) == 0 &&
64 grp->gr_name[len] == '/') {
65 printf("%s\n", grp->gr_name);
77 while ((pass = getpwent())) {
78 printf("%s\n", pass->pw_name);
84 main(int argc, char *argv[])