1#include "pwf.h" 2 3static FILE* f; 4static char* line; 5static struct passwd pw; 6static size_t size; 7 8void setpwent() { 9 if (f) 10 fclose(f); 11 f = 0; 12} 13 14weak_alias(setpwent, endpwent); 15 16struct passwd* getpwent() { 17 struct passwd* res; 18 if (!f) 19 f = fopen("/etc/passwd", "rbe"); 20 if (!f) 21 return 0; 22 __getpwent_a(f, &pw, &line, &size, &res); 23 return res; 24} 25 26struct passwd* getpwuid(uid_t uid) { 27 struct passwd* res; 28 __getpw_a(0, uid, &pw, &line, &size, &res); 29 return res; 30} 31 32struct passwd* getpwnam(const char* name) { 33 struct passwd* res; 34 __getpw_a(name, 0, &pw, &line, &size, &res); 35 return res; 36} 37