Mercurial > hg > release > icedtea7-2.2
changeset 1599:050b48f42fb3
Fix remaining Java files and backport Net.c and RESTARTABLE macro.
2009-01-26 Andrew John Hughes <ahughes@redhat.com>
* overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java,
* overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java:
Fix imports.
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java:
Fix imports and use of varargs.
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java,
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java:
Fix imports.
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java:
Fix imports and use of varargs.
* overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java:
Fix imports.
* patches/icedtea-nio2.patch:
(FileChannelImpl): Fix imports.
(Net.c): Patch to new version with new functions.
(nio_util.h): Add RESTARTABLE macro.
line wrap: on
line diff
--- a/ChangeLog Tue Jan 20 09:44:16 2009 +0000 +++ b/ChangeLog Mon Jan 26 23:09:32 2009 +0000 @@ -1,4 +1,36 @@ -2009-01-19 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-26 Andrew John Hughes <ahughes@redhat.com> + + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java, + * overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java: + Fix imports and use of varargs. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java, + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java: + Fix imports. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java: + Fix imports and use of varargs. + * overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java: + Fix imports. + * patches/icedtea-nio2.patch: + (FileChannelImpl): Fix imports. + (Net.c): Patch to new version with new functions. + (nio_util.h): Add RESTARTABLE macro. + +2009-01-19 Andrew John Hughes <ahughes@redhat.com> * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaNetGetIndexAccess.java: (getByIndex(int)): New method. @@ -75,6 +107,7 @@ (FileDispatcher.release0(FileDescriptor, long, long)): Likewise. 2009-01-19 Deepak Bhole <dbhole@redhat.com> + * IcedTeaPlugin.cc: Add "Java" in the plugin description string. * plugin/icedtea/sun/applet/PluginAppletViewer.java: Change the way the image was searched locally. @@ -107,7 +140,7 @@ * rt/net/sourceforge/jnlp/tools/JarSigner.java: Implement the new CertVerifier verifier interface. -2009-01-19 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-19 Andrew John Hughes <ahughes@redhat.com> * generated/sun/nio/ch/SocketOptionRegistry.java: * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/DatagramChannel.java: @@ -158,7 +191,7 @@ * ports/hotspot/src/cpu/zero/vm/globals_zero.hpp (StackShadowPages): Increase for 64-bit builds. -2009-01-14 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-14 Andrew John Hughes <ahughes@redhat.com> * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/nio/channels/FileChannel.java: Extend java.nio.channels.FileChannel to minimise code. @@ -184,13 +217,13 @@ (getVersionedResourceURL): New function. Constructs a URL with a version-id as the query. -2009-01-13 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-13 Andrew John Hughes <ahughes@redhat.com> * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/JavaIODeleteOnExitAccess.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/misc/SharedSecrets.java: Add missing SharedSecrets files. -2009-01-13 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-13 Andrew John Hughes <ahughes@redhat.com> * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardProtocolFamily.java, * overlays/nio2/openjdk/jdk/src/share/classes/org/classpath/icedtea/java/net/StandardSocketOption.java: @@ -231,7 +264,7 @@ Patch ThreadPoolExecutor to allow access to private variables, add missing files to nio/FILES_java.gmk -2009-01-12 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-12 Andrew John Hughes <ahughes@redhat.com> * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedCopyOption.java, * overlays/nio2/openjdk/jdk/src/share/classes/com/sun/nio/file/ExtendedOpenOption.java, @@ -290,7 +323,7 @@ * contrib/jck/compile-native-code.sh: Build with -m32 or -m64. -2009-01-12 Andrew John Hughes <gnu_andrew@member.fsf.org> +2009-01-12 Andrew John Hughes <ahughes@redhat.com> Initial import of NIO2 code. * patches/ecj/icedtea-pr261.patch: Moved to general patches. @@ -750,13 +783,13 @@ (stamps/extract.stamp): Use AWK here rather than cut. * hotspot.map: Add md5sum for 14.0b08. -2008-12-17 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-17 Andrew John Hughes <ahughes@redhat.com> * acinclude.m4: (FIND_RHINO_JAR): Check for js.jar in Gentoo install location too. -2008-12-17 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-17 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: No need to check again that SYSTEM_GCJ_DIR exists. @@ -769,7 +802,7 @@ More --with-x-home options to macros in acinclude.m4. Remove redundant erroneous use of GCC_OLD. -2008-12-17 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-17 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Remove use of LIBGCJ_JAR, replacing with @@ -783,7 +816,7 @@ * javac.in: Use SYSTEM_GCJ_DIR/jre/lib/rt.jar not LIBGCJ_JAR. -2008-12-17 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-17 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Remove the HotSpot directory while extracting @@ -855,7 +888,7 @@ * rt/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: Provide new cacheable param to JARDesc constructor. -2008-12-09 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-09 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Support use of HGREV. @@ -864,14 +897,14 @@ * configure.ac: Call AC_CHECK_WITH_HG_REVISION. -2008-12-09 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-09 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Properly support --with-openjdk-src-dir. * acinclude.m4: Correct the define for OPENJDK_SRC_DIR. -2008-12-09 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-09 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Support downloading from the Mercurial repository. @@ -880,7 +913,7 @@ * configure.ac: Check for --enable-hg. -2008-12-09 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-09 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Make XRender patch wildcard work where @@ -888,7 +921,7 @@ * configure.ac: Capitalise 'XRender' in configure option. -2008-12-09 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-09 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Don't use find to locate the hotspot directory, @@ -957,7 +990,7 @@ lost chunks from icedtea-sparc.patch, fix build failure with gcc-4.3. * Makefile.am (ICEDTEA_PATCHES): Apply new patch. -2008-12-04 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-04 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Prefix the call to uname -m with @@ -965,7 +998,7 @@ * acinclude.m4: Apply linux32 on s390 as well. -2008-12-04 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-04 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Prefix make invocations with @@ -1081,7 +1114,7 @@ * pulseaudio/src/java/org/classpath/icedtea/pulseaudio/StreamSampleSpecification.java: Make class package-private. -2008-12-03 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-03 Andrew John Hughes <ahughes@redhat.com> Create hierarchical patch space. * patches/icedtea-4486841.patch, @@ -1263,7 +1296,7 @@ patches/icedtea-6755943.patch, patches/icedtea-6766136.patch: New files. -2008-12-02 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-02 Andrew John Hughes <ahughes@redhat.com> * patches/icedtea-bytecodeInterpreter.patch, * patches/icedtea-hotspot7-build-fixes.patch: @@ -1282,7 +1315,7 @@ * ports/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.cpp: Updated using IcedTea7 versions for 14.0b08. -2008-12-01 Andrew John Hughes <gnu_andrew@member.fsf.org> +2008-12-01 Andrew John Hughes <ahughes@redhat.com> * patches/icedtea-hotspot-params-cast-size_t.patch, * patches/icedtea-hotspot-use-idx_t.patch,
--- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/ch/AsynchronousFileLockImpl.java Mon Jan 26 23:09:32 2009 +0000 @@ -27,6 +27,7 @@ package sun.nio.ch; import java.io.IOException; +import java.nio.channels.Channel; import java.nio.channels.ClosedChannelException; import java.nio.channels.FileChannel;
--- a/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/share/classes/sun/nio/fs/PollingWatchService.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,8 +25,6 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.file.attribute.*; import java.security.AccessController; import java.security.PrivilegedAction; import java.security.PrivilegedExceptionAction; @@ -34,6 +32,19 @@ import java.io.IOException; import java.util.*; +import org.classpath.icedtea.java.nio.file.ClosedWatchServiceException; +import org.classpath.icedtea.java.nio.file.DirectoryStream; +import org.classpath.icedtea.java.nio.file.FileRef; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.NotDirectoryException; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.StandardWatchEventKind; +import org.classpath.icedtea.java.nio.file.WatchEvent; +import org.classpath.icedtea.java.nio.file.WatchKey; + +import org.classpath.icedtea.java.nio.file.attribute.Attributes; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; + /** * Simple WatchService implementation that uses background thread to poll * registered directories for changes. This implementation is for use
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/GnomeFileTypeDetector.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,11 +25,12 @@ package sun.nio.fs; -import java.nio.file.FileRef; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; +import org.classpath.icedtea.java.nio.file.FileRef; + /** * File type detector that uses the GNOME I/O library or the deprecated * GNOME VFS to guess the MIME type of a file.
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java Mon Jan 26 23:09:32 2009 +0000 @@ -30,6 +30,8 @@ import java.io.IOException; import sun.misc.Unsafe; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributeView; import static sun.nio.fs.UnixNativeDispatcher.*; @@ -105,7 +107,7 @@ } - public Map<String,?> readAttributes(String first, String[] rest) + public Map<String,?> readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest);
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,14 +25,20 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.file.attribute.*; import java.io.IOException; import java.util.*; import java.security.AccessController; import sun.security.action.GetPropertyAction; import static sun.nio.fs.LinuxNativeDispatcher.*; +import org.classpath.icedtea.java.nio.file.FileStore; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.WatchService; + +import org.classpath.icedtea.java.nio.file.attribute.DosFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.NamedAttributeView; + /** * Linux implementation of FileSystem */
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxNamedAttributeView.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,12 +25,16 @@ package sun.nio.fs; -import java.nio.file.*; import java.nio.ByteBuffer; import java.io.IOException; import java.util.*; import sun.misc.Unsafe; +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.FileChannel; + +import org.classpath.icedtea.java.nio.file.FileSystemException; + import static sun.nio.fs.UnixConstants.*; import static sun.nio.fs.LinuxNativeDispatcher.*;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/LinuxWatchService.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,13 +25,18 @@ package sun.nio.fs; -import java.nio.file.*; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.*; import java.io.IOException; import sun.misc.Unsafe; +import org.classpath.icedtea.java.nio.file.NotDirectoryException; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.StandardWatchEventKind; +import org.classpath.icedtea.java.nio.file.WatchEvent; +import org.classpath.icedtea.java.nio.file.WatchKey; + import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixChannelFactory.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,8 +25,6 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.channels.*; import java.io.FileDescriptor; import java.util.Set; @@ -36,6 +34,13 @@ import sun.misc.SharedSecrets; import sun.misc.JavaIOFileDescriptorAccess; +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; +import org.classpath.icedtea.java.nio.channels.FileChannel; + +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.StandardOpenOption; + import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixCopyFile.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,13 +25,20 @@ package sun.nio.fs; -import java.nio.file.*; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.concurrent.ExecutionException; import com.sun.nio.file.ExtendedCopyOption; +import org.classpath.icedtea.java.nio.file.AtomicMoveNotSupportedException; +import org.classpath.icedtea.java.nio.file.CopyOption; +import org.classpath.icedtea.java.nio.file.DirectoryNotEmptyException; +import org.classpath.icedtea.java.nio.file.FileAlreadyExistsException; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.LinkPermission; +import org.classpath.icedtea.java.nio.file.StandardCopyOption; + import static sun.nio.fs.UnixNativeDispatcher.*; import static sun.nio.fs.UnixConstants.*;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixDirectoryStream.java Mon Jan 26 23:09:32 2009 +0000 @@ -32,6 +32,7 @@ import java.io.IOException; import static sun.nio.fs.UnixNativeDispatcher.*; +import org.classpath.icedtea.java.nio.file.ClosedDirectoryStreamException; import org.classpath.icedtea.java.nio.file.DirectoryStream; import org.classpath.icedtea.java.nio.file.Path;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixException.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,9 +25,13 @@ package sun.nio.fs; -import java.nio.file.*; import java.io.IOException; +import org.classpath.icedtea.java.nio.file.AccessDeniedException; +import org.classpath.icedtea.java.nio.file.FileAlreadyExistsException; +import org.classpath.icedtea.java.nio.file.FileSystemException; +import org.classpath.icedtea.java.nio.file.NoSuchFileException; + /** * Internal exception thrown by native methods when error detected. */
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java Mon Jan 26 23:09:32 2009 +0000 @@ -29,7 +29,16 @@ import java.util.concurrent.TimeUnit; import java.io.IOException; +import org.classpath.icedtea.java.nio.file.ProviderMismatchException; + +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileOwnerAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; import static sun.nio.fs.UnixNativeDispatcher.*; @@ -199,7 +208,7 @@ } - public Map<String,?> readAttributes(String first, String[] rest) + public Map<String,?> readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest); @@ -349,7 +358,7 @@ } - public Map<String,?> readAttributes(String first, String[] rest) + public Map<String,?> readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest);
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileAttributes.java Mon Jan 26 23:09:32 2009 +0000 @@ -31,6 +31,9 @@ import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; /** * Unix implementation of PosixFileAttributes.
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileModeAttribute.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,9 +25,11 @@ package sun.nio.fs; -import java.nio.file.attribute.*; import java.util.*; +import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; + class UnixFileModeAttribute { static final int ALL_PERMISSIONS = UnixConstants.S_IRUSR | UnixConstants.S_IWUSR | UnixConstants.S_IXUSR |
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileStore.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,14 +25,25 @@ package sun.nio.fs; -import java.nio.channels.*; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; import java.util.*; import java.io.IOException; import java.security.AccessController; import java.security.PrivilegedAction; +import org.classpath.icedtea.java.nio.file.FileRef; import org.classpath.icedtea.java.nio.file.FileStore; import org.classpath.icedtea.java.nio.file.FileSystem; +import org.classpath.icedtea.java.nio.file.Paths; + +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileOwnerAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileStoreAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileStoreSpaceAttributes; +import org.classpath.icedtea.java.nio.file.attribute.FileStoreSpaceAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributeView; /** * Base implementation of FileStore for Unix/like implementations.
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystem.java Mon Jan 26 23:09:32 2009 +0000 @@ -34,7 +34,18 @@ import org.classpath.icedtea.java.nio.file.FileStore; import org.classpath.icedtea.java.nio.file.FileSystem; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.PathMatcher; + +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileOwnerAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipalLookupService; + import org.classpath.icedtea.java.nio.file.spi.FileSystemProvider; /**
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixFileSystemProvider.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,13 +25,24 @@ package sun.nio.fs; -import java.nio.channels.*; -import java.nio.channels.spi.AsynchronousChannelProvider.ThreadPoolType; import java.net.URI; +import java.nio.channels.FileChannel; import java.util.concurrent.ExecutorService; import java.io.IOException; import java.util.*; +import org.classpath.icedtea.java.nio.channels.AsynchronousFileChannel; + +import org.classpath.icedtea.java.nio.channels.spi.AsynchronousChannelProvider.ThreadPoolType; + +import org.classpath.icedtea.java.nio.file.FileSystem; +import org.classpath.icedtea.java.nio.file.FileSystemAlreadyExistsException; +import org.classpath.icedtea.java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.ProviderMismatchException; + +import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; + import org.classpath.icedtea.java.nio.file.spi.FileSystemProvider; import sun.nio.ch.ThreadPool;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixPath.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,17 +25,41 @@ package sun.nio.fs; -import java.nio.file.*; -import java.nio.file.attribute.*; -import java.nio.channels.*; import java.security.AccessController; import java.io.*; import java.net.URI; +import java.nio.channels.Channels; +import java.nio.channels.FileChannel; import java.util.*; import sun.security.util.SecurityConstants; +import org.classpath.icedtea.java.io.FilePermission; + +import org.classpath.icedtea.java.nio.channels.SeekableByteChannel; + +import org.classpath.icedtea.java.nio.file.AccessMode; +import org.classpath.icedtea.java.nio.file.CopyOption; +import org.classpath.icedtea.java.nio.file.DirectoryNotEmptyException; +import org.classpath.icedtea.java.nio.file.DirectoryStream; import org.classpath.icedtea.java.nio.file.FileRef; -import org.classpath.icedtea.java.nio.file.attribute.FilePermission; +import org.classpath.icedtea.java.nio.file.FileStore; +import org.classpath.icedtea.java.nio.file.FileSystemException; +import org.classpath.icedtea.java.nio.file.InvalidPathException; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.LinkPermission; +import org.classpath.icedtea.java.nio.file.NotDirectoryException; +import org.classpath.icedtea.java.nio.file.NotLinkException; +import org.classpath.icedtea.java.nio.file.OpenOption; +import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.ProviderMismatchException; +import org.classpath.icedtea.java.nio.file.StandardOpenOption; +import org.classpath.icedtea.java.nio.file.WatchEvent; +import org.classpath.icedtea.java.nio.file.WatchKey; +import org.classpath.icedtea.java.nio.file.WatchService; + +import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; + import org.classpath.icedtea.java.nio.file.spi.AbstractPath; import static sun.nio.fs.UnixNativeDispatcher.*;
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixSecureDirectoryStream.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,16 +25,32 @@ package sun.nio.fs; -import java.nio.channels.SeekableByteChannel; import java.util.*; import java.util.concurrent.TimeUnit; import java.io.IOException; +import org.classpath.icedtea.java.nio.channels.SeekableByteChannel; + +import org.classpath.icedtea.java.nio.file.AtomicMoveNotSupportedException; +import org.classpath.icedtea.java.nio.file.ClosedDirectoryStreamException; +import org.classpath.icedtea.java.nio.file.DirectoryNotEmptyException; +import org.classpath.icedtea.java.nio.file.DirectoryStream; +import org.classpath.icedtea.java.nio.file.LinkOption; +import org.classpath.icedtea.java.nio.file.NotDirectoryException; import org.classpath.icedtea.java.nio.file.OpenOption; import org.classpath.icedtea.java.nio.file.Path; +import org.classpath.icedtea.java.nio.file.ProviderMismatchException; import org.classpath.icedtea.java.nio.file.SecureDirectoryStream; + +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributes; +import org.classpath.icedtea.java.nio.file.attribute.BasicFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileAttribute; +import org.classpath.icedtea.java.nio.file.attribute.FileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.FileOwnerAttributeView; import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributes; import org.classpath.icedtea.java.nio.file.attribute.PosixFileAttributeView; +import org.classpath.icedtea.java.nio.file.attribute.PosixFilePermission; import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; import static sun.nio.fs.UnixNativeDispatcher.*; @@ -529,7 +545,7 @@ } - public Map<String,?> readAttributes(String first, String[] rest) + public Map<String,?> readAttributes(String first, String... rest) throws IOException { AttributesBuilder builder = AttributesBuilder.create(first, rest);
--- a/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java Tue Jan 20 09:44:16 2009 +0000 +++ b/overlays/nio2/openjdk/jdk/src/solaris/classes/sun/nio/fs/UnixUserPrincipals.java Mon Jan 26 23:09:32 2009 +0000 @@ -25,11 +25,11 @@ package sun.nio.fs; -import java.nio.file.attribute.*; import java.io.IOException; +import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; import org.classpath.icedtea.java.nio.file.attribute.UserPrincipal; -import org.classpath.icedtea.java.nio.file.attribute.GroupPrincipal; +import org.classpath.icedtea.java.nio.file.attribute.UserPrincipalNotFoundException; import static sun.nio.fs.UnixNativeDispatcher.*;
--- a/patches/icedtea-nio2.patch Tue Jan 20 09:44:16 2009 +0000 +++ b/patches/icedtea-nio2.patch Mon Jan 26 23:09:32 2009 +0000 @@ -1370,6 +1370,35 @@ + } + } +diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java +--- openjdk.orig/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java 2009-01-20 13:37:15.000000000 +0000 ++++ openjdk/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java 2009-01-20 13:45:52.000000000 +0000 +@@ -32,8 +32,15 @@ + import java.io.IOException; + import java.nio.ByteBuffer; + import java.nio.MappedByteBuffer; +-import java.nio.channels.*; +-import java.nio.channels.spi.*; ++import java.nio.channels.ClosedChannelException; ++import java.nio.channels.ClosedByInterruptException; ++import java.nio.channels.FileLock; ++import java.nio.channels.FileLockInterruptionException; ++import java.nio.channels.NonReadableChannelException; ++import java.nio.channels.NonWritableChannelException; ++import java.nio.channels.OverlappingFileLockException; ++import java.nio.channels.ReadableByteChannel; ++import java.nio.channels.WritableByteChannel; + import java.util.ArrayList; + import java.util.List; + import java.util.Iterator; +@@ -46,6 +53,7 @@ + import sun.misc.Cleaner; + import sun.security.action.GetPropertyAction; + ++import org.classpath.icedtea.java.nio.channels.FileChannel; + + public class FileChannelImpl + extends FileChannel diff -Nru openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java openjdk/jdk/src/share/classes/sun/nio/ch/Net.java --- openjdk.orig/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-15 17:37:33.000000000 +0000 +++ openjdk/jdk/src/share/classes/sun/nio/ch/Net.java 2009-01-19 23:21:37.000000000 +0000 @@ -1867,6 +1896,661 @@ class InheritedChannel { +diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c +--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/Net.c 2009-01-26 20:51:08.000000000 +0000 ++++ openjdk/jdk/src/solaris/native/sun/nio/ch/Net.c 2009-01-26 20:55:17.000000000 +0000 +@@ -1,5 +1,5 @@ + /* +- * Copyright 2001-2007 Sun Microsystems, Inc. All Rights Reserved. ++ * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -37,61 +37,171 @@ + #include "net_util.h" + #include "net_util_md.h" + #include "nio_util.h" +-#include "java_net_SocketOptions.h" + #include "nio.h" + +-#ifdef __linux__ +-#include <sys/utsname.h> ++/** ++ * Definitions for source-specific multicast to allow for building ++ * with older header files. ++ */ ++ ++#ifdef __solaris__ + +-#define IPV6_MULTICAST_IF 17 +-#ifndef SO_BSDCOMPAT +-#define SO_BSDCOMPAT 14 ++#ifndef IP_BLOCK_SOURCE ++ ++#define IP_BLOCK_SOURCE 0x15 ++#define IP_UNBLOCK_SOURCE 0x16 ++#define IP_ADD_SOURCE_MEMBERSHIP 0x17 ++#define IP_DROP_SOURCE_MEMBERSHIP 0x18 ++ ++#define MCAST_BLOCK_SOURCE 0x2b ++#define MCAST_UNBLOCK_SOURCE 0x2c ++#define MCAST_JOIN_SOURCE_GROUP 0x2d ++#define MCAST_LEAVE_SOURCE_GROUP 0x2e ++ ++#endif /* IP_BLOCK_SOURCE */ ++ ++struct my_ip_mreq_source { ++ struct in_addr imr_multiaddr; ++ struct in_addr imr_sourceaddr; ++ struct in_addr imr_interface; ++}; ++ ++/* ++ * Use #pragma pack() construct to force 32-bit alignment on amd64. ++ */ ++#if defined(amd64) ++#pragma pack(4) + #endif ++ ++struct my_group_source_req { ++ uint32_t gsr_interface; /* interface index */ ++ struct sockaddr_storage gsr_group; /* group address */ ++ struct sockaddr_storage gsr_source; /* source address */ ++}; ++ ++#if defined(amd64) ++#pragma pack() + #endif + ++#endif /* __solaris__ */ ++ ++ ++#ifdef __linux__ ++ ++#ifndef IP_BLOCK_SOURCE ++ ++#define IP_BLOCK_SOURCE 38 ++#define IP_UNBLOCK_SOURCE 37 ++#define IP_ADD_SOURCE_MEMBERSHIP 39 ++#define IP_DROP_SOURCE_MEMBERSHIP 40 ++ ++#define MCAST_BLOCK_SOURCE 43 ++#define MCAST_UNBLOCK_SOURCE 44 ++#define MCAST_JOIN_SOURCE_GROUP 42 ++#define MCAST_LEAVE_SOURCE_GROUP 45 ++ ++#endif /* IP_BLOCK_SOURCE */ ++ ++struct my_ip_mreq_source { ++ struct in_addr imr_multiaddr; ++ struct in_addr imr_interface; ++ struct in_addr imr_sourceaddr; ++}; ++ ++struct my_group_source_req { ++ uint32_t gsr_interface; /* interface index */ ++ struct sockaddr_storage gsr_group; /* group address */ ++ struct sockaddr_storage gsr_source; /* source address */ ++}; ++ ++#endif /* __linux__ */ ++ ++ ++#define COPY_INET6_ADDRESS(env, source, target) \ ++ (*env)->GetByteArrayRegion(env, source, 0, 16, target) ++ ++/* ++ * Copy IPv6 group, interface index, and IPv6 source address ++ * into group_source_req structure. ++ */ ++static void initGroupSourceReq(JNIEnv* env, jbyteArray group, jint index, ++ jbyteArray source, struct my_group_source_req* req) ++{ ++ struct sockaddr_in6* sin6; ++ ++ req->gsr_interface = (uint32_t)index; ++ ++ sin6 = (struct sockaddr_in6*)&(req->gsr_group); ++ sin6->sin6_family = AF_INET6; ++ COPY_INET6_ADDRESS(env, group, (jbyte*)&(sin6->sin6_addr)); ++ ++ sin6 = (struct sockaddr_in6*)&(req->gsr_source); ++ sin6->sin6_family = AF_INET6; ++ COPY_INET6_ADDRESS(env, source, (jbyte*)&(sin6->sin6_addr)); ++} ++ ++ + JNIEXPORT void JNICALL + Java_sun_nio_ch_Net_initIDs(JNIEnv *env, jclass clazz) + { + /* Here because Windows native code does need to init IDs */ + } + ++JNIEXPORT jboolean JNICALL ++Java_sun_nio_ch_Net_isIPv6Available0(JNIEnv* env, jclass cl) ++{ ++ return (ipv6_available()) ? JNI_TRUE : JNI_FALSE; ++} ++ + JNIEXPORT int JNICALL +-Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean stream, +- jboolean reuse) ++Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6, ++ jboolean stream, jboolean reuse) + { + int fd; ++ int type = (stream ? SOCK_STREAM : SOCK_DGRAM); ++ int domain = (ipv6_available() && preferIPv6) ? AF_INET6 : AF_INET; + +-#ifdef AF_INET6 +- if (ipv6_available()) +- fd = socket(AF_INET6, (stream ? SOCK_STREAM : SOCK_DGRAM), 0); +- else +-#endif /* AF_INET6 */ +- fd = socket(AF_INET, (stream ? SOCK_STREAM : SOCK_DGRAM), 0); +- ++ fd = socket(domain, type, 0); + if (fd < 0) { + return handleSocketError(env, errno); + } + if (reuse) { + int arg = 1; +- if (NET_SetSockOpt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg, +- sizeof(arg)) < 0) { ++ if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&arg, ++ sizeof(arg)) < 0) { ++ JNU_ThrowByNameWithLastError(env, ++ JNU_JAVANETPKG "SocketException", ++ "sun.nio.ch.Net.setIntOption"); ++ close(fd); ++ return -1; ++ } ++ } ++#ifdef __linux__ ++ /* By default, Linux uses the route default */ ++ if (domain == AF_INET6 && type == SOCK_DGRAM) { ++ int arg = 1; ++ if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &arg, ++ sizeof(arg)) < 0) { + JNU_ThrowByNameWithLastError(env, + JNU_JAVANETPKG "SocketException", + "sun.nio.ch.Net.setIntOption"); ++ close(fd); ++ return -1; + } + } ++#endif + return fd; + } + + JNIEXPORT void JNICALL +-Java_sun_nio_ch_Net_bind(JNIEnv *env, jclass clazz, /* ## Needs rest of PSI gunk */ +- jobject fdo, jobject ia, int port) ++Java_sun_nio_ch_Net_bind0(JNIEnv *env, jclass clazz, jboolean preferIPv6, ++ jobject fdo, jobject iao, int port) + { + SOCKADDR sa; + int sa_len = SOCKADDR_LEN; + int rv = 0; + +- if (NET_InetAddressToSockaddr(env, ia, port, (struct sockaddr *)&sa, &sa_len, JNI_TRUE) != 0) { ++ if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *)&sa, &sa_len, preferIPv6) != 0) { + return; + } + +@@ -101,27 +211,27 @@ + } + } + ++JNIEXPORT void JNICALL ++Java_sun_nio_ch_Net_listen(JNIEnv *env, jclass cl, jobject fdo, jint backlog) ++{ ++ if (listen(fdval(env, fdo), backlog) < 0) ++ handleSocketError(env, errno); ++} ++ + JNIEXPORT jint JNICALL +-Java_sun_nio_ch_Net_connect(JNIEnv *env, jclass clazz, +- jobject fdo, jobject iao, jint port, +- jint trafficClass) ++Java_sun_nio_ch_Net_connect0(JNIEnv *env, jclass clazz, jboolean preferIPv6, ++ jobject fdo, jobject iao, jint port) + { + SOCKADDR sa; + int sa_len = SOCKADDR_LEN; + int rv; + +- if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *) &sa, &sa_len, JNI_TRUE) != 0) { ++ if (NET_InetAddressToSockaddr(env, iao, port, (struct sockaddr *) &sa, ++ &sa_len, preferIPv6) != 0) ++ { + return IOS_THROWN; + } + +-#ifdef AF_INET6 +-#if 0 +- if (trafficClass != 0 && ipv6_available()) { /* ## FIX */ +- NET_SetTrafficClass((struct sockaddr *)&sa, trafficClass); +- } +-#endif +-#endif +- + rv = connect(fdval(env, fdo), (struct sockaddr *)&sa, sa_len); + if (rv != 0) { + if (errno == EINPROGRESS) { +@@ -138,7 +248,7 @@ + Java_sun_nio_ch_Net_localPort(JNIEnv *env, jclass clazz, jobject fdo) + { + SOCKADDR sa; +- int sa_len = SOCKADDR_LEN; ++ socklen_t sa_len = SOCKADDR_LEN; + if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) { + handleSocketError(env, errno); + return -1; +@@ -150,7 +260,7 @@ + Java_sun_nio_ch_Net_localInetAddress(JNIEnv *env, jclass clazz, jobject fdo) + { + SOCKADDR sa; +- int sa_len = SOCKADDR_LEN; ++ socklen_t sa_len = SOCKADDR_LEN; + int port; + if (getsockname(fdval(env, fdo), (struct sockaddr *)&sa, &sa_len) < 0) { + handleSocketError(env, errno); +@@ -159,119 +269,79 @@ + return NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port); + } + +- +-#ifdef NEEDED +- +-/* ## This is gross. We should generate platform-specific constant +- * ## definitions into a .java file and use those directly. +- */ +- +-static int +-mapOption(JNIEnv *env, int opt, int *klevel, int *kopt) +-{ +- +- switch (opt) { +- +- case java_net_SocketOptions_IP_TOS: +- *klevel = IPPROTO_IP; +- *kopt = IP_TOS; +- break; +- +- case java_net_SocketOptions_SO_BROADCAST: +- case java_net_SocketOptions_SO_KEEPALIVE: +- case java_net_SocketOptions_SO_LINGER: +- case java_net_SocketOptions_SO_OOBINLINE: +- case java_net_SocketOptions_SO_RCVBUF: +- case java_net_SocketOptions_SO_REUSEADDR: +- case java_net_SocketOptions_SO_SNDBUF: +- *klevel = SOL_SOCKET; +- break; +- +- case java_net_SocketOptions_TCP_NODELAY: +- *klevel = IPPROTO_IP; +- *kopt = TCP_NODELAY; +- return 0; +- +- default: +- JNU_ThrowByName(env, "java/lang/IllegalArgumentException", NULL); +- return -1; +- } +- +- switch (opt) { +- +- case java_net_SocketOptions_SO_BROADCAST: *kopt = SO_BROADCAST; break; +- case java_net_SocketOptions_SO_KEEPALIVE: *kopt = SO_KEEPALIVE; break; +- case java_net_SocketOptions_SO_LINGER: *kopt = SO_LINGER; break; +- case java_net_SocketOptions_SO_OOBINLINE: *kopt = SO_OOBINLINE; break; +- case java_net_SocketOptions_SO_RCVBUF: *kopt = SO_RCVBUF; break; +- case java_net_SocketOptions_SO_REUSEADDR: *kopt = SO_REUSEADDR; break; +- case java_net_SocketOptions_SO_SNDBUF: *kopt = SO_SNDBUF; break; +- +- default: +- return -1; +- } +- +- return 0; +-} +-#endif +- +- + JNIEXPORT jint JNICALL +-Java_sun_nio_ch_Net_getIntOption0(JNIEnv *env, jclass clazz, +- jobject fdo, jint opt) ++Java_sun_nio_ch_Net_getIntOption0(JNIEnv *env, jclass clazz, jobject fdo, ++ jboolean mayNeedConversion, jint level, jint opt) + { +- int klevel, kopt; + int result; + struct linger linger; ++ u_char carg; + void *arg; +- int arglen; ++ int arglen, n; + +- if (NET_MapSocketOption(opt, &klevel, &kopt) < 0) { +- JNU_ThrowByNameWithLastError(env, +- JNU_JAVANETPKG "SocketException", +- "Unsupported socket option"); +- return -1; ++ /* Option value is an int except for a few specific cases */ ++ ++ arg = (void *)&result; ++ arglen = sizeof(result); ++ ++ if (level == IPPROTO_IP && ++ (opt == IP_MULTICAST_TTL || opt == IP_MULTICAST_LOOP)) { ++ arg = (void*)&carg; ++ arglen = sizeof(carg); + } + +- if (opt == java_net_SocketOptions_SO_LINGER) { ++ if (level == SOL_SOCKET && opt == SO_LINGER) { + arg = (void *)&linger; + arglen = sizeof(linger); +- } else { +- arg = (void *)&result; +- arglen = sizeof(result); + } + +- if (NET_GetSockOpt(fdval(env, fdo), klevel, kopt, arg, &arglen) < 0) { ++ if (mayNeedConversion) { ++ n = NET_GetSockOpt(fdval(env, fdo), level, opt, arg, &arglen); ++ } else { ++ n = getsockopt(fdval(env, fdo), level, opt, arg, &arglen); ++ } ++ if (n < 0) { + JNU_ThrowByNameWithLastError(env, + JNU_JAVANETPKG "SocketException", + "sun.nio.ch.Net.getIntOption"); + return -1; + } + +- if (opt == java_net_SocketOptions_SO_LINGER) +- return linger.l_onoff ? linger.l_linger : -1; +- else +- return result; ++ if (level == IPPROTO_IP && ++ (opt == IP_MULTICAST_TTL || opt == IP_MULTICAST_LOOP)) ++ { ++ return (jint)carg; ++ } ++ ++ if (level == SOL_SOCKET && opt == SO_LINGER) ++ return linger.l_onoff ? (jint)linger.l_linger : (jint)-1; ++ ++ return (jint)result; + } + + JNIEXPORT void JNICALL +-Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, +- jobject fdo, jint opt, jint arg) ++Java_sun_nio_ch_Net_setIntOption0(JNIEnv *env, jclass clazz, jobject fdo, ++ jboolean mayNeedConversion, jint level, jint opt, jint arg) + { +- int klevel, kopt; + int result; + struct linger linger; ++ u_char carg; + void *parg; +- int arglen; ++ int arglen, n; + +- if (NET_MapSocketOption(opt, &klevel, &kopt) < 0) { +- JNU_ThrowByNameWithLastError(env, +- JNU_JAVANETPKG "SocketException", +- "Unsupported socket option"); +- return; ++ /* Option value is an int except for a few specific cases */ ++ ++ parg = (void*)&arg; ++ arglen = sizeof(arg); ++ ++ if (level == IPPROTO_IP && ++ (opt == IP_MULTICAST_TTL || opt == IP_MULTICAST_LOOP)) { ++ parg = (void*)&carg; ++ arglen = sizeof(carg); ++ carg = (u_char)arg; + } + +- if (opt == java_net_SocketOptions_SO_LINGER) { ++ if (level == SOL_SOCKET && opt == SO_LINGER) { + parg = (void *)&linger; + arglen = sizeof(linger); + if (arg >= 0) { +@@ -281,19 +351,199 @@ + linger.l_onoff = 0; + linger.l_linger = 0; + } +- } else { +- parg = (void *)&arg; +- arglen = sizeof(arg); + } + +- if (NET_SetSockOpt(fdval(env, fdo), klevel, kopt, parg, arglen) < 0) { ++ if (mayNeedConversion) { ++ n = NET_SetSockOpt(fdval(env, fdo), level, opt, parg, arglen); ++ } else { ++ n = setsockopt(fdval(env, fdo), level, opt, parg, arglen); ++ } ++ if (n < 0) { + JNU_ThrowByNameWithLastError(env, + JNU_JAVANETPKG "SocketException", + "sun.nio.ch.Net.setIntOption"); + } + } + ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_joinOrDrop4(JNIEnv *env, jobject this, jboolean join, jobject fdo, ++ jint group, jint interf, jint source) ++{ ++ struct ip_mreq mreq; ++ struct my_ip_mreq_source mreq_source; ++ int opt, n, optlen; ++ void* optval; ++ ++ if (source == 0) { ++ mreq.imr_multiaddr.s_addr = htonl(group); ++ mreq.imr_interface.s_addr = htonl(interf); ++ opt = (join) ? IP_ADD_MEMBERSHIP : IP_DROP_MEMBERSHIP; ++ optval = (void*)&mreq; ++ optlen = sizeof(mreq); ++ } else { ++ mreq_source.imr_multiaddr.s_addr = htonl(group); ++ mreq_source.imr_sourceaddr.s_addr = htonl(source); ++ mreq_source.imr_interface.s_addr = htonl(interf); ++ opt = (join) ? IP_ADD_SOURCE_MEMBERSHIP : IP_DROP_SOURCE_MEMBERSHIP; ++ optval = (void*)&mreq_source; ++ optlen = sizeof(mreq_source); ++ } ++ ++ n = setsockopt(fdval(env,fdo), IPPROTO_IP, opt, optval, optlen); ++ if (n < 0) { ++ if (join && (errno == ENOPROTOOPT)) ++ return IOS_UNAVAILABLE; ++ handleSocketError(env, errno); ++ } ++ return 0; ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_blockOrUnblock4(JNIEnv *env, jobject this, jboolean block, jobject fdo, ++ jint group, jint interf, jint source) ++{ ++ struct my_ip_mreq_source mreq_source; ++ int n; ++ int opt = (block) ? IP_BLOCK_SOURCE : IP_UNBLOCK_SOURCE; ++ ++ mreq_source.imr_multiaddr.s_addr = htonl(group); ++ mreq_source.imr_sourceaddr.s_addr = htonl(source); ++ mreq_source.imr_interface.s_addr = htonl(interf); ++ ++ n = setsockopt(fdval(env,fdo), IPPROTO_IP, opt, ++ (void*)&mreq_source, sizeof(mreq_source)); ++ if (n < 0) { ++ if (block && (errno == ENOPROTOOPT)) ++ return IOS_UNAVAILABLE; ++ handleSocketError(env, errno); ++ } ++ return 0; ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobject fdo, ++ jbyteArray group, jint index, jbyteArray source) ++{ ++ struct ipv6_mreq mreq6; ++ struct my_group_source_req req; ++ int opt, n, optlen; ++ void* optval; ++ ++ if (source == NULL) { ++ COPY_INET6_ADDRESS(env, group, (jbyte*)&(mreq6.ipv6mr_multiaddr)); ++ mreq6.ipv6mr_interface = (int)index; ++ opt = (join) ? IPV6_ADD_MEMBERSHIP : IPV6_DROP_MEMBERSHIP; ++ optval = (void*)&mreq6; ++ optlen = sizeof(mreq6); ++ } else { ++#ifdef __linux__ ++ /* Include-mode filtering broken on Linux at least to 2.6.24 */ ++ return IOS_UNAVAILABLE; ++#else ++ initGroupSourceReq(env, group, index, source, &req); ++ opt = (join) ? MCAST_JOIN_SOURCE_GROUP : MCAST_LEAVE_SOURCE_GROUP; ++ optval = (void*)&req; ++ optlen = sizeof(req); ++#endif ++ } ++ ++ n = setsockopt(fdval(env,fdo), IPPROTO_IPV6, opt, optval, optlen); ++ if (n < 0) { ++ if (join && (errno == ENOPROTOOPT)) ++ return IOS_UNAVAILABLE; ++ handleSocketError(env, errno); ++ } ++ return 0; ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, jobject fdo, ++ jbyteArray group, jint index, jbyteArray source) ++{ ++ struct my_group_source_req req; ++ int n; ++ int opt = (block) ? MCAST_BLOCK_SOURCE : MCAST_UNBLOCK_SOURCE; ++ ++ initGroupSourceReq(env, group, index, source, &req); ++ ++ n = setsockopt(fdval(env,fdo), IPPROTO_IPV6, opt, ++ (void*)&req, sizeof(req)); ++ if (n < 0) { ++ if (block && (errno == ENOPROTOOPT)) ++ return IOS_UNAVAILABLE; ++ handleSocketError(env, errno); ++ } ++ return 0; ++} + ++JNIEXPORT void JNICALL ++Java_sun_nio_ch_Net_setInterface4(JNIEnv* env, jobject this, jobject fdo, jint interf) ++{ ++ struct in_addr in; ++ int arglen = sizeof(struct in_addr); ++ int n; ++ ++ in.s_addr = htonl(interf); ++ ++ n = setsockopt(fdval(env, fdo), IPPROTO_IP, IP_MULTICAST_IF, ++ (void*)&(in.s_addr), arglen); ++ if (n < 0) { ++ handleSocketError(env, errno); ++ } ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_getInterface4(JNIEnv* env, jobject this, jobject fdo) ++{ ++ struct in_addr in; ++ int arglen = sizeof(struct in_addr); ++ int n; ++ ++ n = getsockopt(fdval(env, fdo), IPPROTO_IP, IP_MULTICAST_IF, (void*)&in, &arglen); ++ if (n < 0) { ++ handleSocketError(env, errno); ++ return -1; ++ } ++ return ntohl(in.s_addr); ++} ++ ++JNIEXPORT void JNICALL ++Java_sun_nio_ch_Net_setInterface6(JNIEnv* env, jobject this, jobject fdo, jint index) ++{ ++ int value = (jint)index; ++ int arglen = sizeof(value); ++ int n; ++ ++ n = setsockopt(fdval(env, fdo), IPPROTO_IPV6, IPV6_MULTICAST_IF, ++ (void*)&(index), arglen); ++ if (n < 0) { ++ handleSocketError(env, errno); ++ } ++} ++ ++JNIEXPORT jint JNICALL ++Java_sun_nio_ch_Net_getInterface6(JNIEnv* env, jobject this, jobject fdo) ++{ ++ int index; ++ int arglen = sizeof(index); ++ int n; ++ ++ n = getsockopt(fdval(env, fdo), IPPROTO_IPV6, IPV6_MULTICAST_IF, (void*)&index, &arglen); ++ if (n < 0) { ++ handleSocketError(env, errno); ++ return -1; ++ } ++ return (jint)index; ++} ++ ++JNIEXPORT void JNICALL ++Java_sun_nio_ch_Net_shutdown(JNIEnv *env, jclass cl, jobject fdo, jint jhow) ++{ ++ int how = (jhow == sun_nio_ch_Net_SHUT_RD) ? SHUT_RD : ++ (jhow == sun_nio_ch_Net_SHUT_WR) ? SHUT_WR : SHUT_RDWR; ++ if (shutdown(fdval(env, fdo), how) < 0) ++ handleSocketError(env, errno); ++} + + /* Declared in nio_util.h */ + +diff -Nru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/nio_util.h openjdk/jdk/src/solaris/native/sun/nio/ch/nio_util.h +--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/nio_util.h 2009-01-26 22:44:30.000000000 +0000 ++++ openjdk/jdk/src/solaris/native/sun/nio/ch/nio_util.h 2009-01-26 22:44:22.000000000 +0000 +@@ -1,5 +1,5 @@ + /* +- * Copyright 2001-2002 Sun Microsystems, Inc. All Rights Reserved. ++ * Copyright 2001-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it +@@ -27,8 +27,15 @@ + #include "jni_util.h" + #include "jvm.h" + #include "jlong.h" ++#include <errno.h> + #include <sys/types.h> + ++#define RESTARTABLE(_cmd, _result) do { \ ++ do { \ ++ _result = _cmd; \ ++ } while((_result == -1) && (errno == EINTR)); \ ++} while(0) ++ + + /* NIO utility procedures */ + diff -Nru openjdk.orig/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java openjdk/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java --- openjdk.orig/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java 2009-01-19 22:35:32.000000000 +0000 +++ openjdk/jdk/src/windows/classes/sun/nio/ch/FileDispatcher.java 2009-01-19 22:37:37.000000000 +0000