2002-08-27 Ulrich Drepper <drepper@redhat.com>
* nss/getXXbyYY_r.c (REENTRANT_NAME): If no service is available
set h_errno to NO_RECOVERY [PR libc/4360].
+2002-08-27 Ulrich Drepper <drepper@redhat.com>
+
+ * nss/getXXbyYY_r.c (REENTRANT_NAME): If no service is available
+ set h_errno to NO_RECOVERY [PR libc/4360].
+
2002-08-26 Ulrich Drepper <drepper@redhat.com>
* libio/Makefile (tests): Add bug-fopena+.
#include <assert.h>
#include <errno.h>
+#include <stdbool.h>
#include "nsswitch.h"
#ifdef USE_NSCD
# include <nscd/nscd_proto.h>
#ifdef USE_NSCD
int nscd_status;
#endif
+#ifdef NEED_H_ERRNO
+ bool any_service = false;
+#endif
#ifdef PREPROCESS
PREPROCESS;
while (no_more == 0)
{
+#ifdef NEED_H_ERRNO
+ any_service = true;
+#endif
+
status = DL_CALL_FCT (fct, (ADD_VARIABLES, resbuf, buffer, buflen,
&errno H_ERRNO_VAR));
done:
#endif
*result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
+#ifdef NEED_H_ERRNO
+ if (status != NSS_STATUS_SUCCESS && ! any_service)
+ /* We were not able to use any service. */
+ *h_errnop = NO_RECOVERY;
+#endif
#ifdef POSTPROCESS
POSTPROCESS;
#endif