summary refs log tree commit diff
path: root/nss
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-12 02:58:43 +0000
committerRoland McGrath <roland@gnu.org>2002-09-12 02:58:43 +0000
commit9bfce4bf2865c2981a8d790ae7f6c50c4e87dd97 (patch)
tree3d870712dd378958807f0dc88d82884413168289 /nss
parent049e7c97d6f4d191717b06ede1da40965f032148 (diff)
downloadglibc-9bfce4bf2865c2981a8d790ae7f6c50c4e87dd97.tar.gz
glibc-9bfce4bf2865c2981a8d790ae7f6c50c4e87dd97.tar.xz
glibc-9bfce4bf2865c2981a8d790ae7f6c50c4e87dd97.zip
* nss/getnssent_r.c (__nss_getent_r): Use EAGAIN instead of errno
	when using h_errno and it's not set to NETDB_INTERNAL.
	* nss/getXXbyYY_r.c [NEED_H_ERRNO]: Likewise.

	* Makefile ($(common-objpfx)testrun.sh): New target.
	(others): Depend on it.
	(postclean-generated): Append it.
Diffstat (limited to 'nss')
-rw-r--r--nss/getXXbyYY_r.c7
-rw-r--r--nss/getnssent_r.c7
2 files changed, 12 insertions, 2 deletions
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 58cf29300f..020848024b 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -244,6 +244,13 @@ done:
 #endif
   return (status == NSS_STATUS_SUCCESS
 	  ? 0 : (status == NSS_STATUS_TRYAGAIN ? errno : ENOENT));
+  return (status == NSS_STATUS_SUCCESS ? 0
+	  : status != NSS_STATUS_TRYAGAIN ? ENOENT
+#ifdef NEED_H_ERRNO
+	  /* These functions only set errno if h_errno is NETDB_INTERNAL.  */
+	  : *h_errnop != NETDB_INTERNAL ? EAGAIN
+#endif
+	  : errno);
 }
 
 
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);
 }