Author: ccustine
Date: Sun Nov 8 07:01:11 2009
New Revision: 833839
URL: http://svn.apache.org/viewvc?rev=833839&view=rev
Log:
FELIX-1855 - exec command eats first keystroke of subsequent commands
Modified:
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/ExecuteAction.java
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/utils/StreamPumper.java
Modified:
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/ExecuteAction.java
URL:
http://svn.apache.org/viewvc/felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/ExecuteAction.java?rev=833839&r1=833838&r2=833839&view=diff
==============================================================================
---
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/ExecuteAction.java
(original)
+++
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/ExecuteAction.java
Sun Nov 8 07:01:11 2009
@@ -37,11 +37,11 @@
protected Object doExecute() throws Exception {
ProcessBuilder builder = new ProcessBuilder(args);
- log.info("Executing: {}", builder.command());
+ PumpStreamHandler handler = new PumpStreamHandler(System.in,
System.out, System.err);
+ log.info("Executing: {}", builder.command());
Process p = builder.start();
- PumpStreamHandler handler = new PumpStreamHandler(System.in,
System.out, System.err);
handler.attach(p);
handler.start();
@@ -54,7 +54,7 @@
handler.stop();
- return status;
+ return null;
}
}
Modified:
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/utils/StreamPumper.java
URL:
http://svn.apache.org/viewvc/felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/utils/StreamPumper.java?rev=833839&r1=833838&r2=833839&view=diff
==============================================================================
---
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/utils/StreamPumper.java
(original)
+++
felix/trunk/karaf/shell/commands/src/main/java/org/apache/felix/karaf/shell/commands/utils/StreamPumper.java
Sun Nov 8 07:01:11 2009
@@ -105,13 +105,20 @@
int length;
try {
- while ((length = in.read(buf)) > 0 && !finish) {
- out.write(buf, 0, length);
- if (autoflush) {
- out.flush();
+ do {
+ while (in.available() > 0 && !finish) {
+ length = in.read(buf);
+ if (length < 1 ) {
+ break;
+ }
+ out.write(buf, 0, length);
+ if (autoflush) {
+ out.flush();
+ }
}
- }
- out.flush();
+ out.flush();
+ Thread.sleep(200); // Pause to avoid tight loop if external
proc is slow
+ } while (!finish && closeWhenExhausted);
}
catch (Exception e) {
synchronized (this) {