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