X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fpasswd%2Fgetpwent.c;h=c655135e254fd168fdc2f43cc5bbfbeafad072f1;hb=4ca442157e381690202c3bcc102627d137fd0466;hp=dabd411ab987730b649ed765baead9bfb1c7d880;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/passwd/getpwent.c b/src/passwd/getpwent.c index dabd411a..c655135e 100644 --- a/src/passwd/getpwent.c +++ b/src/passwd/getpwent.c @@ -15,7 +15,7 @@ struct passwd *getpwent() static char *line; static struct passwd pw; size_t size=0; - if (!f) f = fopen("/etc/passwd", "rb"); + if (!f) f = fopen("/etc/passwd", "rbe"); if (!f) return 0; return __getpwent_a(f, &pw, &line, &size); } @@ -23,17 +23,23 @@ struct passwd *getpwent() struct passwd *getpwuid(uid_t uid) { struct passwd *pw; + int errno_saved; setpwent(); while ((pw=getpwent()) && pw->pw_uid != uid); + errno_saved = errno; endpwent(); + errno = errno_saved; return pw; } struct passwd *getpwnam(const char *name) { struct passwd *pw; + int errno_saved; setpwent(); while ((pw=getpwent()) && strcmp(pw->pw_name, name)); + errno_saved = errno; endpwent(); + errno = errno_saved; return pw; }