+2005-12-14 Andrew Haley <aph@redhat.com>
+
+ * gnu/java/rmi/rmic/CompilerProcess.java: Use a new thread to
+ handle stdout from the child process.
+
2005-12-14 Tom Tromey <tromey@redhat.com>
PR classpath/25389:
String[] args = computeArguments (name);
Process p = Runtime.getRuntime ().exec (args);
- /* Print compiler output to System.out. */
- InputStream procin = p.getInputStream();
- for (int ch = procin.read(); ch != -1; ch = procin.read())
- System.out.print((char) ch);
+ /* Print compiler output to System.out. Do this asynchronously so
+ that the compiler never blocks writing to its stdout. */
+ {
+ final InputStream procin = p.getInputStream();
+ final Thread copier = new Thread()
+ {
+ public void run()
+ {
+ try
+ {
+ for (int ch = procin.read(); ch != -1; ch = procin.read())
+ System.out.print((char) ch);
+ }
+ catch (java.io.IOException _)
+ {
+ }
+ }
+ };
+
+ copier.start();
+ }
/* Collect compiler error output in a buffer.
* If compilation fails, it will be used for an error message.