LCA2011 version
[tridge/junkcode.git] / listgroups.c
1 #include <stdio.h>
2 #include <grp.h>
3 #include <pwd.h>
4 #include <sys/types.h>
5
6 int main(void)
7 {
8         struct group *grp;
9         int ngroups, i;
10         gid_t *grps;
11
12         ngroups = getgroups(0, NULL);
13
14         grps = (gid_t *)malloc(ngroups * sizeof(gid_t));
15         
16         getgroups(ngroups, grps);
17
18         grp = getgrgid(getegid());
19         printf("%5d %s (primary)\n", getegid(), grp->gr_name);
20
21         for (i=0;i<ngroups;i++) {
22                 grp = getgrgid(grps[i]);
23                 printf("%5d %s\n", grps[i], grp?grp->gr_name:"<NULL>");
24         }
25         return 0;
26 }