#ifndef _NETDB_H
#include <resolv/netdb.h>
+/* Macros for accessing h_errno from inside libc. */
+# ifdef _LIBC_REENTRANT
+# include <tls.h>
+# if USE_TLS && HAVE___THREAD
+# undef h_errno
+# define h_errno h_errno /* For #ifndef h_errno tests. */
+extern __thread int h_errno;
+# define __set_h_errno(x) (h_errno = (x))
+# else
+static inline int
+__set_h_errno (int __err)
+{
+ return *__h_errno_location () = __err;
+}
+# endif
+# else
+# undef h_errno
+# define __set_h_errno(x) (h_errno = (x))
+# endif /* _LIBC_REENTRANT */
+
/* Document internal interfaces. */
extern int __gethostent_r (struct hostent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996,97,98,2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <netdb.h>
#undef h_errno
+#include <tls.h>
+
/* We need to have the error status variable of the resolver
accessible in the libc. */
+
+#if USE_TLS && HAVE___THREAD
+__thread int h_errno;
+#else
int h_errno = 0;
weak_alias (h_errno, _h_errno)
+#endif
-/* When threaded, h_errno may be a per-process variable. */
+/* When threaded, h_errno may be a per-thread variable. */
int *
weak_const_function
__h_errno_location (void)
-/* Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996,97,98,99,2000,01,02 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
/* Function to get address of global `h_errno' variable. */
extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
-#ifdef _LIBC
-# ifdef _LIBC_REENTRANT
-static inline int
-__set_h_errno (int __err)
-{
- return *__h_errno_location () = __err;
-}
-# else
-# define __set_h_errno(x) (h_errno = (x))
-# endif /* _LIBC_REENTRANT */
-#endif /* _LIBC */
-
-
-#if !defined _LIBC || defined _LIBC_REENTRANT
/* Use a macro to access always the thread specific `h_errno' variable. */
-# define h_errno (*__h_errno_location ())
-#endif
+#define h_errno (*__h_errno_location ())
/* Possible values left in `h_errno'. */