aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/net/natVMInetAddressPosix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/net/natVMInetAddressPosix.cc')
-rw-r--r--libjava/java/net/natVMInetAddressPosix.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/libjava/java/net/natVMInetAddressPosix.cc b/libjava/java/net/natVMInetAddressPosix.cc
index 7fbe1bb1ff0..bc25f3654aa 100644
--- a/libjava/java/net/natVMInetAddressPosix.cc
+++ b/libjava/java/net/natVMInetAddressPosix.cc
@@ -47,10 +47,25 @@ java::net::VMInetAddress::getLocalHostname ()
{
char *chars;
#ifdef HAVE_GETHOSTNAME
+#ifdef MAXHOSTNAMELEN
char buffer[MAXHOSTNAMELEN];
if (gethostname (buffer, MAXHOSTNAMELEN))
return NULL;
chars = buffer;
+#else
+ size_t size = 256;
+ while (1) {
+ char buffer[size];
+ if (!gethostname (buffer, size-1))
+ {
+ buffer[size-1] = 0;
+ return JvNewStringUTF (buffer);
+ }
+ else if (errno != ENAMETOOLONG)
+ return NULL;
+ size *= 2;
+ }
+#endif
#elif HAVE_UNAME
struct utsname stuff;
if (uname (&stuff) != 0)