Browse Source

use __h_errno_location for h_errno

we do not bother making h_errno thread-local since the only interfaces
that use it are inherently non-thread-safe. but still use the
potentially-thread-local ABI to access it just to avoid lock-in.
rs-1.0
Rich Felker 14 years ago
parent
commit
e68c51ac46
  1. 6
      include/netdb.h
  2. 8
      src/network/h_errno.c
  3. 1
      src/network/res_query.c

6
include/netdb.h

@ -128,7 +128,11 @@ struct hostent *gethostbyaddr (const void *, socklen_t, int);
int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *); int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **); int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **); int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
extern int h_errno; #ifdef __GNUC__
__attribute__((const))
#endif
int *__h_errno_location(void);
#define h_errno (*__h_errno_location())
#define EAI_NODATA -5 #define EAI_NODATA -5
#define EAI_ADDRFAMILY -9 #define EAI_ADDRFAMILY -9
#define EAI_INPROGRESS -100 #define EAI_INPROGRESS -100

8
src/network/h_errno.c

@ -1 +1,9 @@
#include <netdb.h>
#undef h_errno;
int h_errno; int h_errno;
int *__h_errno_location(void)
{
return &h_errno;
}

1
src/network/res_query.c

@ -1,3 +1,4 @@
#define _GNU_SOURCE
#include <netdb.h> #include <netdb.h>
#include "__dns.h" #include "__dns.h"
#include "libc.h" #include "libc.h"

Loading…
Cancel
Save