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