Index: fusl/src/passwd/getpwent.c |
diff --git a/fusl/src/passwd/getpwent.c b/fusl/src/passwd/getpwent.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f2bd516e57ba3261ab94c6081f692f77aaea4f47 |
--- /dev/null |
+++ b/fusl/src/passwd/getpwent.c |
@@ -0,0 +1,37 @@ |
+#include "pwf.h" |
+ |
+static FILE *f; |
+static char *line; |
+static struct passwd pw; |
+static size_t size; |
+ |
+void setpwent() |
+{ |
+ if (f) fclose(f); |
+ f = 0; |
+} |
+ |
+weak_alias(setpwent, endpwent); |
+ |
+struct passwd *getpwent() |
+{ |
+ struct passwd *res; |
+ if (!f) f = fopen("/etc/passwd", "rbe"); |
+ if (!f) return 0; |
+ __getpwent_a(f, &pw, &line, &size, &res); |
+ return res; |
+} |
+ |
+struct passwd *getpwuid(uid_t uid) |
+{ |
+ struct passwd *res; |
+ __getpw_a(0, uid, &pw, &line, &size, &res); |
+ return res; |
+} |
+ |
+struct passwd *getpwnam(const char *name) |
+{ |
+ struct passwd *res; |
+ __getpw_a(name, 0, &pw, &line, &size, &res); |
+ return res; |
+} |