1 /*
2 * grcat.c
3 *
4 * Generate a printable version of the group database.
5 */
6 /*
7 * Arnold Robbins, arnold@skeeve.com, May 1993
8 * Public Domain
9 * December 2010, move to ANSI C definition for main().
10 */
11
12 #if HAVE_CONFIG_H
13 #include <config.h>
14 #endif
15
16 #if defined (STDC_HEADERS)
17 #include <stdlib.h>
18 #endif
19
20 #ifndef HAVE_GETGRENT
21 int main() { return 0; }
22 #else
23 #include <stdio.h>
24 #include <grp.h>
25
26 int
27 main(int argc, char **argv)
28 {
29 struct group *g;
30 int i;
31
32 while ((g = getgrent()) != NULL) {
33 #ifdef HAVE_STRUCT_GROUP_GR_PASSWD
34 printf("%s:%s:%ld:", g->gr_name, g->gr_passwd,
35 (long) g->gr_gid);
36 #else
37 printf("%s:*:%ld:", g->gr_name, (long) g->gr_gid);
38 #endif
39 for (i = 0; g->gr_mem[i] != NULL; i++) {
40 printf("%s", g->gr_mem[i]);
41 if (g->gr_mem[i+1] != NULL)
42 putchar(',');
43 }
44 putchar('\n');
45 }
46 endgrent();
47 return 0;
48 }
49 #endif /* HAVE_GETGRENT */