| #include "pwf.h" |
| |
| static FILE* f; |
| static char *line, **mem; |
| static struct group gr; |
| |
| void setgrent() { |
| if (f) |
| fclose(f); |
| f = 0; |
| } |
| |
| weak_alias(setgrent, endgrent); |
| |
| struct group* getgrent() { |
| struct group* res; |
| size_t size = 0, nmem = 0; |
| if (!f) |
| f = fopen("/etc/group", "rbe"); |
| if (!f) |
| return 0; |
| __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res); |
| return res; |
| } |
| |
| struct group* getgrgid(gid_t gid) { |
| struct group* res; |
| size_t size = 0, nmem = 0; |
| __getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res); |
| return res; |
| } |
| |
| struct group* getgrnam(const char* name) { |
| struct group* res; |
| size_t size = 0, nmem = 0; |
| __getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res); |
| return res; |
| } |