Repository: karaf
Updated Branches:
  refs/heads/master b03bd9620 -> 435982bfc


[KARAF-5420] Bad console behavior when dealing with the input stream for piped 
commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/435982bf
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/435982bf
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/435982bf

Branch: refs/heads/master
Commit: 435982bfcd648523b9705c966335d31e9fafc7e9
Parents: b03bd96
Author: Guillaume Nodet <[email protected]>
Authored: Thu Oct 12 13:06:30 2017 +0200
Committer: Guillaume Nodet <[email protected]>
Committed: Thu Oct 12 15:27:46 2017 +0200

----------------------------------------------------------------------
 shell/commands/pom.xml                                        | 4 ++++
 .../org/apache/karaf/shell/commands/impl/ExecuteAction.java   | 7 +++++--
 .../java/org/apache/karaf/util/process/PumpStreamHandler.java | 2 +-
 .../main/java/org/apache/karaf/util/process/StreamPumper.java | 4 ++--
 4 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/shell/commands/pom.xml
----------------------------------------------------------------------
diff --git a/shell/commands/pom.xml b/shell/commands/pom.xml
index 590fcab..a491760 100644
--- a/shell/commands/pom.xml
+++ b/shell/commands/pom.xml
@@ -43,6 +43,10 @@
             <artifactId>org.apache.karaf.shell.core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.gogo.runtime</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.karaf</groupId>
             <artifactId>org.apache.karaf.util</artifactId>
             <scope>provided</scope>

http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
----------------------------------------------------------------------
diff --git 
a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
 
b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
index 1c7ed6a..f059e7a 100644
--- 
a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
+++ 
b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
@@ -48,9 +48,12 @@ public class ExecuteAction implements Action {
         ProcessBuilder builder = new ProcessBuilder(args)
                 .directory(session.currentDir().toFile());
 
-        PumpStreamHandler handler = new PumpStreamHandler(System.in, 
System.out, System.err, "Command" + args.toString());
+        org.apache.felix.service.command.Process cp = 
org.apache.felix.service.command.Process.Utils.current();
 
-        log.debug("Executing: {}", builder.command());
+        String cmd = String.join(" ", args);
+        PumpStreamHandler handler = new PumpStreamHandler(cp.in(), cp.out(), 
cp.err(), "Command '" + cmd + "'");
+
+        log.debug("Executing: {}", cmd);
         Process p = builder.start();
 
         handler.attach(p);

http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
----------------------------------------------------------------------
diff --git 
a/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java 
b/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
index 6e2eeb2..0d3c83d 100644
--- a/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
+++ b/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
@@ -266,7 +266,7 @@ public class PumpStreamHandler {
         assert out != null;
 
         StreamPumper pumper = new StreamPumper(in, out, closeWhenExhausted);
-        pumper.setNonBlocking(true);
+//        pumper.setNonBlocking(true);
         pumper.setAutoflush(true);
         return pumper;
     }

http://git-wip-us.apache.org/repos/asf/karaf/blob/435982bf/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
----------------------------------------------------------------------
diff --git a/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java 
b/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
index 9068fba..45ece7b 100644
--- a/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
+++ b/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
@@ -114,7 +114,7 @@ public class StreamPumper implements Runnable {
 
         final byte[] buf = new byte[bufferSize];
 
-        int length;
+        int length = 0;
         try {
             while (true) {
                 if (nonBlocking) {
@@ -143,7 +143,7 @@ public class StreamPumper implements Runnable {
                 }
                 boolean finish;
                 synchronized (this) {
-                    finish = this.finish;
+                    finish = this.finish || length < 0;
                 }
                 if (finish) {
                     break;

Reply via email to