diff options
Diffstat (limited to 'nss/getnssent_r.c')
-rw-r--r-- | nss/getnssent_r.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/nss/getnssent_r.c b/nss/getnssent_r.c index 39c867ce79..c1f8965363 100644 --- a/nss/getnssent_r.c +++ b/nss/getnssent_r.c @@ -197,6 +197,9 @@ __nss_getent_r (const char *getent_func_name, } *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; - return (status == NSS_STATUS_SUCCESS - ? 0 : status == NSS_STATUS_TRYAGAIN ? errno : ENOENT); + return (status == NSS_STATUS_SUCCESS ? 0 + : status != NSS_STATUS_TRYAGAIN ? ENOENT + /* h_errno functions only set errno if h_errno is NETDB_INTERNAL. */ + : (h_errnop == NULL || *h_errnop == NETDB_INTERNAL) ? errno + : EAGAIN); } |