1#define _GNU_SOURCE
2#include <grp.h>
3#include <stdio.h>
4
5int putgrent(const struct group* gr, FILE* f) {
6    int r;
7    size_t i;
8    flockfile(f);
9    if ((r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid)) < 0)
10        goto done;
11    if (gr->gr_mem)
12        for (i = 0; gr->gr_mem[i]; i++)
13            if ((r = fprintf(f, "%s%s", i ? "," : "", gr->gr_mem[i])) < 0)
14                goto done;
15    r = fputc('\n', f);
16done:
17    funlockfile(f);
18    return r < 0 ? -1 : 0;
19}
20