fix clobbering of errno in get(pw|gr)([ug]id|nam) by fclose
This commit is contained in:
parent
6016457011
commit
aef84ca7ec
2 changed files with 12 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue