* 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.
This commit is contained in:
Roland McGrath 2002-09-12 02:58:43 +00:00
parent 049e7c97d6
commit 9bfce4bf28
4 changed files with 35 additions and 2 deletions

View File

@ -1,5 +1,13 @@
2002-09-11 Roland McGrath <roland@redhat.com>
* 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.
* nss/bug-erange.c: New file.
* nss/Makefile (tests): Add it.

View File

@ -130,6 +130,21 @@ ifeq (yes,$(build-shared))
# Build the shared object from the PIC object library.
lib: $(common-objpfx)libc.so
endif
# This is a handy script for running any dynamically linked program against
# the current libc build for testing.
$(common-objpfx)testrun.sh: $(common-objpfx)config.make \
$(..)Makeconfig $(..)Makefile
(echo '#!/bin/sh'; \
echo "GCONV_PATH='$(common-objpfx)iconvdata' \\"; \
echo 'exec $(run-program-prefix) $${1+"$$@"}'; \
) > $@T
chmod a+x $@T
mv -f $@T $@
postclean-generated += testrun.sh
others: $(common-objpfx)testrun.sh
# Makerules creates a file `stubs' in each subdirectory, which
# contains `#define __stub_FUNCTION' for each function defined in that

View File

@ -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);
}

View File

@ -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);
}