getgrent.c 684 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include "pwf.h"
  2. static FILE *f;
  3. static char *line, **mem;
  4. static struct group gr;
  5. void setgrent()
  6. {
  7. if (f) fclose(f);
  8. f = 0;
  9. }
  10. weak_alias(setgrent, endgrent);
  11. struct group *getgrent()
  12. {
  13. struct group *res;
  14. size_t size=0, nmem=0;
  15. if (!f) f = fopen("/etc/group", "rbe");
  16. if (!f) return 0;
  17. __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
  18. return res;
  19. }
  20. struct group *getgrgid(gid_t gid)
  21. {
  22. struct group *res;
  23. size_t size=0, nmem=0;
  24. __getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res);
  25. return res;
  26. }
  27. struct group *getgrnam(const char *name)
  28. {
  29. struct group *res;
  30. size_t size=0, nmem=0;
  31. __getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res);
  32. return res;
  33. }