aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@dcc.unicamp.br>1999-08-01 00:14:32 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-08-01 00:14:32 +0000
commit34c5c0e18c861856bef4bb8c4204d5dcf4a9dd4f (patch)
tree83d44668e24d60cd0ba72a110c5c6db1266ca3cc /libjava/java
parent5f67f48f90c767a2a8371bc4ddb5034a202e7488 (diff)
downloadgcc-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.cc20
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 */