aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2016-09-30 13:05:25 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-30 14:13:00 +0000
commiteff49fb234ca66b898df3af9faf6fff3ba33f5b6 (patch)
tree283234b2c708050d8c112b19e346fe8a316545b6
parent3180d1fd5648c53dda8a4c4bd9fe56be7fcd3cf9 (diff)
Do not write terminal output in the experimental UI character-by-character (which results in single-character gRPC messages).
Fixes #1861. -- MOS_MIGRATED_REVID=134775680
-rw-r--r--src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java b/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java
index 5a932d4d6d..ae48c2af41 100644
--- a/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java
+++ b/src/main/java/com/google/devtools/build/lib/util/io/PositionAwareAnsiTerminalWriter.java
@@ -31,21 +31,23 @@ public class PositionAwareAnsiTerminalWriter implements AnsiTerminalWriter {
this.position = 0;
}
- private void appendChar(char c) throws IOException {
- if (c == '\n') {
- terminalWriter.newline();
- position = 0;
- } else {
- terminalWriter.append(Character.toString(c));
- position++;
- }
- }
-
@Override
public AnsiTerminalWriter append(String text) throws IOException {
- for (int i = 0; i < text.length(); i++) {
- appendChar(text.charAt(i));
+ int i = 0;
+ while (i < text.length()) {
+ int next = text.indexOf('\n', i);
+ if (next == -1) {
+ terminalWriter.append(text.substring(i));
+ position += text.length() - i;
+ i = text.length();
+ } else {
+ terminalWriter.append(text.substring(i, next));
+ terminalWriter.newline();
+ i = next + 1;
+ position = 0;
+ }
}
+
return this;
}