The reentrant interface getpwent_r() shall function in the same way as the interface getpwent(), except that getpwent_r() shall return the user name, user password, GECOS field, home directory, and shell program in buffers provided by the caller, rather than as a pointer to static storage.
The parameter pwbuf contains the struct passwd that was read from the stream, if any.
The parameter buf contains additional strings, if any.
The parameter buflen specifies the size of buf.
The parameter *pwbufp returns a pointer to the struct passwd in *pwbuf.
On success, getpwent_r() shall return 0, and *pwbufp shall contain a pointer to the result.
On failure, *pwbufp shall contain NULL, and getpwent_r() shall return an error as follows.
No more password entries.
Not enough buffer space. Specify a larger buffer and try again.