POSIX prohibits any library function from setting errno to 0.

Correct my previous commit and add a comment to the manpage
indicating that the user must set errno to 0 if they wish to
distinguish "no such user" from "error".

Pointed out by: Jacques Vidrine (nectar@)
This commit is contained in:
kientzle 2004-05-17 18:27:05 +00:00
parent 0ed1ef1afa
commit 59823baf8b
2 changed files with 6 additions and 2 deletions

View File

@ -185,9 +185,13 @@ return a valid pointer to a passwd structure on success
or
.Dv NULL
if the entry is not found or if an error occurs.
In the latter case,
If an error does occur,
.Va errno
will be set.
Note that programs must explicitly set
.Va errno
to zero before calling any of these functions if they need to
distinguish between a non-existent entry and an error.
The functions
.Fn getpwent_r ,
.Fn getpwnam_r ,

View File

@ -388,7 +388,7 @@ getpw(int (*fn)(union key, struct passwd *, char *, size_t, struct passwd **),
return (NULL);
}
} while (res == NULL && rv == ERANGE);
if (res == NULL)
if (rv != 0)
errno = rv;
return (res);
}