diff options
author | Alexandre Oliva <oliva@dcc.unicamp.br> | 1999-08-01 00:14:32 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-08-01 00:14:32 +0000 |
commit | 34c5c0e18c861856bef4bb8c4204d5dcf4a9dd4f (patch) | |
tree | 83d44668e24d60cd0ba72a110c5c6db1266ca3cc /libjava/java | |
parent | 5f67f48f90c767a2a8371bc4ddb5034a202e7488 (diff) | |
download | gcc-34c5c0e18c861856bef4bb8c4204d5dcf4a9dd4f.zip gcc-34c5c0e18c861856bef4bb8c4204d5dcf4a9dd4f.tar.gz gcc-34c5c0e18c861856bef4bb8c4204d5dcf4a9dd4f.tar.bz2 |
configure.in: Check for struct hostent_data and need for -D_REENTRANT for gethostbyname_r...
1999-07-31 Alexandre Oliva <oliva@dcc.unicamp.br>
* configure.in: Check for struct hostent_data and need for
-D_REENTRANT for gethostbyname_r declaration.
* java/net/natInetAddress.cc: Define _REENTRANT if needed.
(lookup): Use hostent_data for fixed_buffer.
* configure, include/config.h.in: Rebuilt.
From-SVN: r28369
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/net/natInetAddress.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/libjava/java/net/natInetAddress.cc b/libjava/java/net/natInetAddress.cc index feac469..b15590a 100644 --- a/libjava/java/net/natInetAddress.cc +++ b/libjava/java/net/natInetAddress.cc @@ -10,6 +10,10 @@ details. */ #include <config.h> +#if GETHOSTBYNAME_R_NEEDS_REENTRANT && !defined(_REENTRANT) +# define _REENTRANT 1 +#endif + #ifdef HAVE_UNISTD_H #include <unistd.h> #endif @@ -97,6 +101,9 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, struct hostent *hptr = NULL; #if defined (HAVE_GETHOSTBYNAME_R) || defined (HAVE_GETHOSTBYADDR_R) struct hostent hent_r; +#if HAVE_STRUCT_HOSTENT_DATA + struct hostent_data fixed_buffer, *buffer_r = &fixed_buffer; +#else #if defined (__GLIBC__) // FIXME: in glibc, gethostbyname_r returns NETDB_INTERNAL to herr and // ERANGE to errno if the buffer size is too small, rather than what is @@ -109,6 +116,7 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, char *buffer_r = fixed_buffer; int size_r = sizeof (fixed_buffer); #endif +#endif if (host != NULL) { @@ -122,10 +130,13 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, JvGetStringUTFRegion (host, 0, host->length(), hostname); buf[len] = '\0'; #ifdef HAVE_GETHOSTBYNAME_R - int herr = 0; while (true) { int ok; +#if HAVE_STRUCT_HOSTENT_DATA + ok = ! gethostbyname_r (hostname, &hent_r, buffer_r); +#else + int herr = 0; #ifdef GETHOSTBYNAME_R_RETURNS_INT ok = ! gethostbyname_r (hostname, &hent_r, buffer_r, size_r, &hptr, &herr); @@ -139,6 +150,7 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, buffer_r = (char *) _Jv_AllocBytesChecked (size_r); } else +#endif /* HAVE_STRUCT_HOSTENT_DATA */ break; } #else @@ -171,10 +183,13 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, JvFail ("unrecognized size"); #ifdef HAVE_GETHOSTBYADDR_R - int herr = 0; while (true) { int ok; +#if HAVE_STRUCT_HOSTENT_DATA + ok = ! gethostbyaddr_r (val, len, type, &hent_r, buffer_r); +#else + int herr = 0; #ifdef GETHOSTBYADDR_R_RETURNS_INT ok = ! gethostbyaddr_r (val, len, type, &hent_r, buffer_r, size_r, &hptr, &herr); @@ -189,6 +204,7 @@ java::net::InetAddress::lookup (jstring host, java::net::InetAddress* iaddr, buffer_r = (char *) _Jv_AllocBytesChecked (size_r); } else +#endif /* HAVE_STRUCT_HOSTENT_DATA */ break; } #else /* HAVE_GETHOSTBYADDR_R */ |