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) {


Reply via email to