X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fpasswd%2Fgetgrent.c;h=429a3e58a7aa9b72fd533720b7a2571831becb19;hb=599f97360389911c293e0ca4c5eb49e007377fba;hp=e9d25eba6397e4b819f0b3ecdb4e0d7b717ea75b;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/passwd/getgrent.c b/src/passwd/getgrent.c index e9d25eba..429a3e58 100644 --- a/src/passwd/getgrent.c +++ b/src/passwd/getgrent.c @@ -15,7 +15,7 @@ struct group *getgrent() static char *line, **mem; static struct group gr; size_t size=0, nmem=0; - if (!f) f = fopen("/etc/group", "rb"); + if (!f) f = fopen("/etc/group", "rbe"); if (!f) return 0; return __getgrent_a(f, &gr, &line, &size, &mem, &nmem); } @@ -23,17 +23,23 @@ struct group *getgrent() struct group *getgrgid(gid_t gid) { struct group *gr; + int errno_saved; setgrent(); while ((gr=getgrent()) && gr->gr_gid != gid); + errno_saved = errno; endgrent(); + errno = errno_saved; return gr; } struct group *getgrnam(const char *name) { struct group *gr; + int errno_saved; setgrent(); while ((gr=getgrent()) && strcmp(gr->gr_name, name)); + errno_saved = errno; endgrent(); + errno = errno_saved; return gr; }