classpath 0.97.1: Added bugfix patches.
authorRobert Schuster <thebohemian@gmx.net>
Tue, 22 Apr 2008 17:24:31 +0000 (17:24 +0000)
committerRobert Schuster <thebohemian@gmx.net>
Tue, 22 Apr 2008 17:24:31 +0000 (17:24 +0000)
classpath-minimal 0.97.1: Added bugfix patches.

packages/classpath/classpath-minimal_0.97.1.bb
packages/classpath/classpath_0.97.1.bb
packages/classpath/files/SimpleName.diff [new file with mode: 0644]
packages/classpath/files/netif_16.patch [new file with mode: 0644]

index 31abce5..131dc3f 100644 (file)
@@ -1,6 +1,11 @@
 require classpath.inc
 
-PR = "r0"
+SRC_URI += "\
+  file://netif_16.patch;patch=1;pnum=0 \
+  file://SimpleName.diff;patch=1;pnum=0 \
+  "
+
+PR = "r1"
 
 PROVIDES = "${PN} classpath"
 
index b8cd020..1d67768 100644 (file)
@@ -1,6 +1,11 @@
 require classpath.inc
 
-PR = "r0"
+SRC_URI += "\
+  file://netif_16.patch;patch=1;pnum=0 \
+  file://SimpleName.diff;patch=1;pnum=0 \
+  "
+
+PR = "r1"
 
 DEPENDS += "gtk+ gconf libxtst"
 
@@ -15,4 +20,3 @@ EXTRA_OECONF += "\
                 --with-vm=java \
                "
 
-
diff --git a/packages/classpath/files/SimpleName.diff b/packages/classpath/files/SimpleName.diff
new file mode 100644 (file)
index 0000000..ff2bec0
--- /dev/null
@@ -0,0 +1,66 @@
+Index: vm/reference/java/lang/VMClass.java
+===================================================================
+RCS file: /sources/classpath/classpath/vm/reference/java/lang/VMClass.java,v
+retrieving revision 1.20
+diff -u -r1.20 VMClass.java
+--- vm/reference/java/lang/VMClass.java        18 Sep 2007 21:52:38 -0000      1.20
++++ vm/reference/java/lang/VMClass.java        19 Apr 2008 15:19:00 -0000
+@@ -296,27 +296,43 @@
+    */
+   static String getSimpleName(Class klass)
+   {
++    int arrayCount = 0;
++    while (klass.isArray())
++      {
++        klass = klass.getComponentType();
++        ++arrayCount;
++      }
++    // now klass is the component type
++    
++    String simpleComponentName = null;
+     if (isAnonymousClass(klass))
+-      return "";
+-    if (isArray(klass))
+       {
+-      return getComponentType(klass).getSimpleName() + "[]";
++        simpleComponentName = "";
+       }
+-    String fullName = getName(klass);
+-    int pos = fullName.lastIndexOf("$");
+-    if (pos == -1)
+-      pos = 0;
+     else
+       {
+-      ++pos;
+-      while (Character.isDigit(fullName.charAt(pos)))
+-        ++pos;
++        String fullName = getName(klass);
++        int pos = fullName.lastIndexOf("$");
++        if (pos != -1) 
++          { //inner class or local class
++            // skip digits of local classes
++            while (Character.isDigit(fullName.charAt(pos+1)))
++              pos++;
++          } 
++        else 
++          {
++            pos = fullName.lastIndexOf(".");
++          }
++        simpleComponentName = fullName.substring(pos+1);
+       }
+-    int packagePos = fullName.lastIndexOf(".", pos);
+-    if (packagePos == -1)
+-      return fullName.substring(pos);
+-    else
+-      return fullName.substring(packagePos + 1);
++    
++    if (arrayCount == 0)
++      return simpleComponentName;
++    
++    StringBuffer sb = new StringBuffer(simpleComponentName);
++    while (arrayCount-- > 0)
++      sb.append("[]");
++    return sb.toString();        
+   }
+   /**
diff --git a/packages/classpath/files/netif_16.patch b/packages/classpath/files/netif_16.patch
new file mode 100644 (file)
index 0000000..9b5e425
--- /dev/null
@@ -0,0 +1,263 @@
+Index: java/net/NetworkInterface.java
+===================================================================
+RCS file: /sources/classpath/classpath/java/net/NetworkInterface.java,v
+retrieving revision 1.23
+diff -u -r1.23 NetworkInterface.java
+--- java/net/NetworkInterface.java     18 Dec 2006 21:37:39 -0000      1.23
++++ java/net/NetworkInterface.java     21 Apr 2008 10:38:25 -0000
+@@ -1,5 +1,5 @@
+ /* NetworkInterface.java --
+-   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
++   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
+ This file is part of GNU Classpath.
+@@ -265,4 +265,50 @@
+     return result.toString();
+   }
++
++  /**
++   * Determines whether this interface is ready to transfer data.
++   *
++   * @return whether the interface is up
++  */
++  public boolean isUp()
++    throws SocketException
++  {
++    return VMNetworkInterface.isUp(netif.name);
++  }
++
++  /**
++   * Determines whether this interface does point to point
++   * transmission.
++   *
++   * @return whether the interface does point to point transmission
++  */
++  public boolean isPointToPoint()
++    throws SocketException
++  {
++    return VMNetworkInterface.isPointToPoint(netif.name);
++  }
++
++  /**
++   * Determines whether this interface is the loopback interface.
++   *
++   * @return whether the interface is the loopback interface
++  */
++  public boolean isLoopback()
++    throws SocketException
++  {
++    return VMNetworkInterface.isLoopback(netif.name);
++  }
++
++  /**
++   * Determines whether this interface supports multicast transmission.
++   *
++   * @return whether the interface supports multicast transmission.
++  */
++  public boolean supportsMulticast()
++    throws SocketException
++  {
++    return VMNetworkInterface.supportsMulticast(netif.name);
++  }
++
+ }
+Index: vm/reference/java/net/VMNetworkInterface.java
+===================================================================
+RCS file: /sources/classpath/classpath/vm/reference/java/net/VMNetworkInterface.java,v
+retrieving revision 1.7
+diff -u -r1.7 VMNetworkInterface.java
+--- vm/reference/java/net/VMNetworkInterface.java      18 Dec 2006 21:37:39 -0000      1.7
++++ vm/reference/java/net/VMNetworkInterface.java      21 Apr 2008 10:38:25 -0000
+@@ -1,5 +1,5 @@
+ /* VMNetworkInterface.java --
+-   Copyright (C) 2005  Free Software Foundation, Inc.
++   Copyright (C) 2005, 2008  Free Software Foundation, Inc.
+ This file is part of GNU Classpath.
+@@ -119,4 +119,13 @@
+     else
+       throw new SocketException("invalid interface address");
+   }
++
++  static native boolean isUp(String name) throws SocketException;
++
++  static native boolean isLoopback(String name) throws SocketException;
++
++  static native boolean isPointToPoint(String name) throws SocketException;
++
++  static native boolean supportsMulticast(String name) throws SocketException;
++
+ }
+Index: native/jni/java-net/java_net_VMNetworkInterface.c
+===================================================================
+RCS file: /sources/classpath/classpath/native/jni/java-net/java_net_VMNetworkInterface.c,v
+retrieving revision 1.6
+diff -u -r1.6 java_net_VMNetworkInterface.c
+--- native/jni/java-net/java_net_VMNetworkInterface.c  5 Apr 2007 12:34:19 -0000       1.6
++++ native/jni/java-net/java_net_VMNetworkInterface.c  21 Apr 2008 10:38:25 -0000
+@@ -1,5 +1,5 @@
+ /* VMNetworkInterface.c - Native methods for NetworkInterface class
+-   Copyright (C) 2003, 2005, 2006  Free Software Foundation, Inc.
++   Copyright (C) 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+ This file is part of GNU Classpath.
+@@ -50,11 +50,18 @@
+ #include <stdio.h>
+ #include <string.h>
++#include <net/if.h>
++#include <sys/ioctl.h>
++
+ #include <jni.h>
+ #include <jcl.h>
++#include <cpnative.h>
++#include <cpnet.h>
++
+ #include "java_net_VMNetworkInterface.h"
++int iff_flags(JNIEnv *, jstring, jint *);
+ static jmethodID java_net_VMNetworkInterface_init;
+ static jmethodID java_net_VMNetworkInterface_addAddress;
+@@ -251,4 +258,136 @@
+ #endif /* HAVE_IFADDRS_H && HAVE_GETIFADDRS */
+ }
++int iff_flags(JNIEnv *env, jstring name, jint *flags)
++{
++  struct ifreq iff;
++  const char *iff_name;
++  jint socket;
++  int error, retval;
++
++  if ((error = cpnet_openSocketDatagram(env, &socket, AF_INET)))
++  {
++    return error;
++  }
++
++  iff_name = JCL_jstring_to_cstring(env, name);
++  memset(&iff, 0, sizeof(iff));
++  strcpy(iff.ifr_name, iff_name);
++ 
++  if (ioctl(socket, SIOCGIFFLAGS, &iff) >= 0)
++  {
++    *flags = (jint) iff.ifr_flags;
++
++    retval = 0;
++  }
++  else
++  {
++    retval = errno;
++  }
++
++  cpnet_close(env, socket);
++
++  JCL_free_cstring(env, name, iff_name);
++
++  return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isUp (JNIEnv *env, jclass class UNUSED,
++                                       jstring name)
++{
++  jint flags;
++  int error;
++  jboolean retval;
++
++  if ((error = iff_flags(env, name, &flags)))
++  {
++    JCL_ThrowException(env, "java/net/SocketException",
++                       cpnative_getErrorString(error));
++
++    retval = JNI_FALSE;
++  }
++  else
++  {
++    retval = (flags & (IFF_UP | IFF_RUNNING))
++             ? JNI_TRUE
++             : JNI_FALSE;
++  }
++
++  return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isPointToPoint (JNIEnv *env,
++                                                 jclass class UNUSED,
++                                                 jstring name)
++{
++  jint flags;
++  int error;
++  jboolean retval;
++
++  if ((error = iff_flags(env, name, &flags)))
++  {
++    JCL_ThrowException(env, "java/net/SocketException",
++                       cpnative_getErrorString(error));
++
++    retval = JNI_FALSE;
++  }
++  else
++  {
++    retval = (flags & IFF_POINTOPOINT) ? JNI_TRUE
++                                       : JNI_FALSE;
++  }
++
++  return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_isLoopback (JNIEnv *env,
++                                             jclass class UNUSED,
++                                             jstring name)
++{
++  jint flags;
++  int error;
++  jboolean retval;
++
++  if ((error = iff_flags(env, name, &flags)))
++  {
++    JCL_ThrowException(env, "java/net/SocketException",
++                       cpnative_getErrorString(error));
++
++    retval = JNI_FALSE;
++  }
++  else
++  {
++    retval = (flags & IFF_LOOPBACK) ? JNI_TRUE : JNI_FALSE;
++  }
++
++  return retval;
++}
++
++JNIEXPORT jboolean JNICALL
++Java_java_net_VMNetworkInterface_supportsMulticast (JNIEnv *env,
++                                                    jclass class UNUSED,
++                                                    jstring name)
++{
++  jint flags;
++  int error;
++  jboolean retval;
++
++  if ((error = iff_flags(env, name, &flags)))
++  {
++    JCL_ThrowException(env, "java/net/SocketException",
++                       cpnative_getErrorString(error));
++
++    retval = JNI_FALSE;
++  }
++  else
++  {
++    retval = (flags & IFF_MULTICAST) ? JNI_TRUE : JNI_FALSE;
++  }
++
++  return retval;
++}
++
+ /* end of file */