OSDN Git Service

2007-08-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
authordoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Aug 2007 22:24:40 +0000 (22:24 +0000)
committerdoko <doko@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Aug 2007 22:24:40 +0000 (22:24 +0000)
        * java/net/natVMInetAddressPosix.cc
        (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]:
        Allocate buffer dynamically.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127305 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/net/natVMInetAddressPosix.cc

index e9dbb5f..cbec57f 100644 (file)
@@ -1,3 +1,9 @@
+2007-08-08  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+       * java/net/natVMInetAddressPosix.cc
+       (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]:
+       Allocate buffer dynamically.
+
 2007-08-04  Alfred M. Szmidt  <ams@gnu.org>
 
        * java/io/natFilePosix.cc (init_native) [!MAXPATHLEN]: Define to 0.
 2007-08-04  Alfred M. Szmidt  <ams@gnu.org>
 
        * java/io/natFilePosix.cc (init_native) [!MAXPATHLEN]: Define to 0.
index 7fbe1bb..bc25f36 100644 (file)
@@ -47,10 +47,25 @@ java::net::VMInetAddress::getLocalHostname ()
 {
   char *chars;
 #ifdef HAVE_GETHOSTNAME
 {
   char *chars;
 #ifdef HAVE_GETHOSTNAME
+#ifdef MAXHOSTNAMELEN
   char buffer[MAXHOSTNAMELEN];
   if (gethostname (buffer, MAXHOSTNAMELEN))
     return NULL;
   chars = buffer;
   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)
 #elif HAVE_UNAME
   struct utsname stuff;
   if (uname (&stuff) != 0)