From b192a6f48aa995a3a59b485b192fe3ca4676a49e Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Sun, 24 Nov 2002 15:59:12 +0000 Subject: [PATCH] Make sure to drain the pipes. --- .../org/eclipse/cdt/core/CommandLauncher.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java index d92c79b25a0..6d29c15a8ac 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CommandLauncher.java @@ -30,6 +30,8 @@ public class CommandLauncher { protected String fErrorMessage; + private String lineSeparator; + /** * The number of milliseconds to pause * between polling. @@ -44,6 +46,7 @@ public class CommandLauncher { public CommandLauncher() { fProcess= null; fShowCommand= false; + lineSeparator = System.getProperty("line.separator", "\n"); } /** @@ -173,6 +176,25 @@ public class CommandLauncher { //e.printStackTrace(); } + // Drain the pipes. + try { + while (errInPipe.available() > 0 || inputPipe.available() > 0) { + if ( errInPipe.available() > 0 ) { + nbytes = errInPipe.read(buffer); + err.write(buffer, 0, nbytes); + err.flush(); + } + if ( inputPipe.available() > 0 ) { + nbytes = inputPipe.read(buffer); + out.write(buffer, 0, nbytes); + out.flush(); + } + } + errInPipe.close(); + inputPipe.close(); + } catch (IOException e) { + } + return state; } @@ -183,7 +205,7 @@ public class CommandLauncher { buf.append(commandArgs[i]); buf.append(' '); } - buf.append('\n'); + buf.append(lineSeparator); try { os.write(buf.toString().getBytes()); os.flush();