Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #2914 - SteveLauC:Wrong-getpwent_r-definition-on-solari…
…sh-os, r=<try> fix wrong definitions of getpwent_r and getgrent_r on solarish os Closes #2908 * [man page for `getpwent_r`](https://illumos.org/man/3C/getpwnam) * [man page for `getgrent_r`](https://illumos.org/man/3C/getgrnam) You may find the definitions for `getpwnam_r/getpwuid_r/getgrnam_r/getgruid_r` exposed by `libc` are also wrong: ```c struct passwd *getpwnam_r(const char *name, struct passwd *pwd, char *buffer, int buflen); ``` ```rust pub fn getpwnam_r( name: *const ::c_char, pwd: *mut passwd, buf: *mut ::c_cha buflen: ::size_t, result: *mut *mut passwd, ) -> ::c_int; ``` But actually they are **correct** as there are the POSIX-conforming definitions (see `Standard conforming` section of above man pages): ``` Standard conforming cc [ flag...] file... -D_POSIX_PTHREAD_SEMANTICS [ library... ] int getpwnam_r(const char *name, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); int getpwuid_r(uid_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); ``` `getpwent_r/getgrent_r` don't get lucky, they do not have the POSIX-conforming alternatives. To double check this, I searched its [source code](https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libc/port/gen/getpwnam_r.c): ```shell $ rg "__posix_getpwnam_r" port/mapfile-vers 1582: __posix_getpwnam_r; port/gen/getpwnam_r.c 152:__posix_getpwnam_r(const char *name, struct passwd *pwd, char *buffer, $ rg "__posix_getpwent_r" $ ```
- Loading branch information