Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/nss/gids.c
blob: 81d7d69be87d902da40517728a4fa90542b5cf39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define _GNU_SOURCE
#include <grp.h>
#include <stdio.h>
#include <string.h>
#define BUFLEN 4096

int main() {
     struct group gr, *grp;
     char buf[BUFLEN];
     int i, cnt;

     cnt = 0;

     setgrent();
     while (1) {
           i = getgrent_r(&gr, buf, BUFLEN, &grp);
           if (i) {
                 printf("status: %d\n", i);
                 break;
           }
           int num_members = 0;
           char** mem_ptr = grp->gr_mem;
           while (mem_ptr && *mem_ptr) {num_members++; mem_ptr++;}
           printf("\ncnt %d: name %s gid (%d) : num_members %d\n", cnt, grp->gr_name, grp->gr_gid, num_members);
           for (i = 0; i < num_members; i++)
             printf("%s ", grp->gr_mem[i]);
           if (num_members) printf("\n");
           cnt++;
     }
     endgrent();
     return 0;
}