Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java28
1 files changed, 15 insertions, 13 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
index 0abbe7e09c..796cb745a1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/SideBandInputStream.java
@@ -48,6 +48,7 @@ import static org.eclipse.jgit.transport.SideBandOutputStream.HDR_SIZE;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Writer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -83,10 +84,10 @@ class SideBandInputStream extends InputStream {
static final int CH_ERROR = 3;
private static Pattern P_UNBOUNDED = Pattern
- .compile("^([\\w ]+): +(\\d+)(?:, done\\.)? *$");
+ .compile("^([\\w ]+): +(\\d+)(?:, done\\.)? *[\r\n]$");
private static Pattern P_BOUNDED = Pattern
- .compile("^([\\w ]+): +\\d+% +\\( *(\\d+)/ *(\\d+)\\)(?:, done\\.)? *$");
+ .compile("^([\\w ]+): +\\d+% +\\( *(\\d+)/ *(\\d+)\\)(?:, done\\.)? *[\r\n]$");
private final InputStream rawIn;
@@ -94,6 +95,8 @@ class SideBandInputStream extends InputStream {
private final ProgressMonitor monitor;
+ private final Writer messages;
+
private String progressBuffer = "";
private String currentTask;
@@ -106,10 +109,12 @@ class SideBandInputStream extends InputStream {
private int available;
- SideBandInputStream(final InputStream in, final ProgressMonitor progress) {
+ SideBandInputStream(final InputStream in, final ProgressMonitor progress,
+ final Writer messageStream) {
rawIn = in;
pckIn = new PacketLineIn(rawIn);
monitor = progress;
+ messages = messageStream;
currentTask = "";
}
@@ -170,7 +175,7 @@ class SideBandInputStream extends InputStream {
}
}
- private void progress(String pkt) {
+ private void progress(String pkt) throws IOException {
pkt = progressBuffer + pkt;
for (;;) {
final int lf = pkt.indexOf('\n');
@@ -185,16 +190,13 @@ class SideBandInputStream extends InputStream {
else
break;
- final String msg = pkt.substring(0, s);
- if (doProgressLine(msg))
- pkt = pkt.substring(s + 1);
- else
- break;
+ doProgressLine(pkt.substring(0, s + 1));
+ pkt = pkt.substring(s + 1);
}
progressBuffer = pkt;
}
- private boolean doProgressLine(final String msg) {
+ private void doProgressLine(final String msg) throws IOException {
Matcher matcher;
matcher = P_BOUNDED.matcher(msg);
@@ -208,7 +210,7 @@ class SideBandInputStream extends InputStream {
final int cnt = Integer.parseInt(matcher.group(2));
monitor.update(cnt - lastCnt);
lastCnt = cnt;
- return true;
+ return;
}
matcher = P_UNBOUNDED.matcher(msg);
@@ -222,10 +224,10 @@ class SideBandInputStream extends InputStream {
final int cnt = Integer.parseInt(matcher.group(2));
monitor.update(cnt - lastCnt);
lastCnt = cnt;
- return true;
+ return;
}
- return false;
+ messages.write(msg);
}
private void beginTask(final int totalWorkUnits) {

Back to the top