putgrent.c 413 B

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