pwd.h has incorrect prototype for getpwnam_r and getpwuid_r
For unknown reasons, the prototypes under _POSIX_PTHREAD_SEMANTICS in pwd.h use int as the fourth argument. POSIX says this should be size_t. In fact, our declarations of the __posix_xxx functions are correct in this regard. This problem has existed for at least 10 years; its origin is unknown. See http://pubs.opengroup.org/onlinepubs/009695399/functions/getpwnam.html.