Blame bootstrap-break-processbuilder-dependency.patch

e797f0b
diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux
e797f0b
--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux	2010-09-01 22:21:08.815402468 +0100
e797f0b
+++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.linux	2010-09-01 22:23:19.572081778 +0100
e797f0b
@@ -62,6 +62,32 @@
e797f0b
     private /* final */ InputStream  stdout;
e797f0b
     private /* final */ InputStream  stderr;
e797f0b
 
e797f0b
+    /**
e797f0b
+     * Required package-private classes taken from
e797f0b
+     * Oracle's java.lang.ProcessBuilder for bootstrapping.
e797f0b
+     */
e797f0b
+
e797f0b
+    /**
e797f0b
+     * Implements a null input stream.
e797f0b
+     */
e797f0b
+    static class NullInputStream extends InputStream {
e797f0b
+        static final NullInputStream INSTANCE = new NullInputStream();
e797f0b
+        private NullInputStream() {}
e797f0b
+        public int read()      { return -1; }
e797f0b
+        public int available() { return 0; }
e797f0b
+    }
e797f0b
+
e797f0b
+    /**
e797f0b
+     * Implements a null output stream.
e797f0b
+     */
e797f0b
+    static class NullOutputStream extends OutputStream {
e797f0b
+        static final NullOutputStream INSTANCE = new NullOutputStream();
e797f0b
+        private NullOutputStream() {}
e797f0b
+        public void write(int b) throws IOException {
e797f0b
+            throw new IOException("Stream closed");
e797f0b
+        }
e797f0b
+    }
e797f0b
+
e797f0b
     /* this is for the reaping thread */
e797f0b
     private native int waitForProcessExit(int pid);
e797f0b
 
e797f0b
@@ -155,15 +181,15 @@
e797f0b
 
e797f0b
     void initStreams(int[] fds) throws IOException {
e797f0b
         stdin = (fds[0] == -1) ?
e797f0b
-            ProcessBuilder.NullOutputStream.INSTANCE :
e797f0b
+            NullOutputStream.INSTANCE :
e797f0b
             new ProcessPipeOutputStream(fds[0]);
e797f0b
 
e797f0b
         stdout = (fds[1] == -1) ?
e797f0b
-            ProcessBuilder.NullInputStream.INSTANCE :
e797f0b
+            NullInputStream.INSTANCE :
e797f0b
             new ProcessPipeInputStream(fds[1]);
e797f0b
 
e797f0b
         stderr = (fds[2] == -1) ?
e797f0b
-            ProcessBuilder.NullInputStream.INSTANCE :
e797f0b
+            NullInputStream.INSTANCE :
e797f0b
             new ProcessPipeInputStream(fds[2]);
e797f0b
 
e797f0b
         processReaperExecutor.execute(new Runnable() {
e797f0b
@@ -275,7 +301,7 @@
e797f0b
                     byte[] stragglers = drainInputStream(in);
e797f0b
                     in.close();
e797f0b
                     this.in = (stragglers == null) ?
e797f0b
-                        ProcessBuilder.NullInputStream.INSTANCE :
e797f0b
+                        NullInputStream.INSTANCE :
e797f0b
                         new ByteArrayInputStream(stragglers);
e797f0b
                     if (buf == null) // asynchronous close()?
e797f0b
                         this.in = null;
e797f0b
@@ -306,7 +332,7 @@
e797f0b
                     // We know of no reason to get an IOException, but if
e797f0b
                     // we do, there's nothing else to do but carry on.
e797f0b
                 }
e797f0b
-                this.out = ProcessBuilder.NullOutputStream.INSTANCE;
e797f0b
+                this.out = NullOutputStream.INSTANCE;
e797f0b
             }
e797f0b
         }
e797f0b
     }
e797f0b
diff -Nru openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris
e797f0b
--- openjdk-boot.orig/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris	2010-09-01 22:21:08.815402468 +0100
e797f0b
+++ openjdk-boot/jdk/src/solaris/classes/java/lang/UNIXProcess.java.solaris	2010-09-01 22:22:33.204096111 +0100
e797f0b
@@ -45,6 +45,32 @@
e797f0b
     private DeferredCloseInputStream stdout_inner_stream;
e797f0b
     private InputStream stderr_stream;
e797f0b
 
e797f0b
+    /**
e797f0b
+     * Required package-private classes taken from
e797f0b
+     * Oracle's java.lang.ProcessBuilder for bootstrapping.
e797f0b
+     */
e797f0b
+
e797f0b
+    /**
e797f0b
+     * Implements a null input stream.
e797f0b
+     */
e797f0b
+    static class NullInputStream extends InputStream {
e797f0b
+        static final NullInputStream INSTANCE = new NullInputStream();
e797f0b
+        private NullInputStream() {}
e797f0b
+        public int read()      { return -1; }
e797f0b
+        public int available() { return 0; }
e797f0b
+    }
e797f0b
+
e797f0b
+    /**
e797f0b
+     * Implements a null output stream.
e797f0b
+     */
e797f0b
+    static class NullOutputStream extends OutputStream {
e797f0b
+        static final NullOutputStream INSTANCE = new NullOutputStream();
e797f0b
+        private NullOutputStream() {}
e797f0b
+        public void write(int b) throws IOException {
e797f0b
+            throw new IOException("Stream closed");
e797f0b
+        }
e797f0b
+    }
e797f0b
+
e797f0b
     /* this is for the reaping thread */
e797f0b
     private native int waitForProcessExit(int pid);
e797f0b
 
e797f0b
@@ -86,7 +112,7 @@
e797f0b
         java.security.AccessController.doPrivileged(
e797f0b
         new java.security.PrivilegedAction<Void>() { public Void run() {
e797f0b
             if (std_fds[0] == -1)
e797f0b
-                stdin_stream = ProcessBuilder.NullOutputStream.INSTANCE;
e797f0b
+                stdin_stream = NullOutputStream.INSTANCE;
e797f0b
             else {
e797f0b
                 FileDescriptor stdin_fd = new FileDescriptor();
e797f0b
                 fdAccess.set(stdin_fd, std_fds[0]);
e797f0b
@@ -95,7 +121,7 @@
e797f0b
             }
e797f0b
 
e797f0b
             if (std_fds[1] == -1)
e797f0b
-                stdout_stream = ProcessBuilder.NullInputStream.INSTANCE;
e797f0b
+                stdout_stream = NullInputStream.INSTANCE;
e797f0b
             else {
e797f0b
                 FileDescriptor stdout_fd = new FileDescriptor();
e797f0b
                 fdAccess.set(stdout_fd, std_fds[1]);
e797f0b
@@ -104,7 +130,7 @@
e797f0b
             }
e797f0b
 
e797f0b
             if (std_fds[2] == -1)
e797f0b
-                stderr_stream = ProcessBuilder.NullInputStream.INSTANCE;
e797f0b
+                stderr_stream = NullInputStream.INSTANCE;
e797f0b
             else {
e797f0b
                 FileDescriptor stderr_fd = new FileDescriptor();
e797f0b
                 fdAccess.set(stderr_fd, std_fds[2]);