aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Palevich <jackpal@google.com>2012-09-22 20:48:36 -0700
committerJack Palevich <jackpal@google.com>2012-09-22 20:48:36 -0700
commitc99140a22c1a3276b42980f61b1b1c760fb3a488 (patch)
treed640504001430d5f4d330adcf69c1cb80ae1c832
parentcb3ec9be9d4513cab774a33cccd91ee198d54df4 (diff)
downloadAndroidTerm-c99140a22c1a3276b42980f61b1b1c760fb3a488.tar.gz
Improve compatability when parsing escape sequences.
Fixes vttest test of cursor movement.
-rw-r--r--libraries/emulatorview/src/jackpal/androidterm/emulatorview/TerminalEmulator.java14
1 files changed, 8 insertions, 6 deletions
diff --git a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TerminalEmulator.java b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TerminalEmulator.java
index 4e755ca..a906046 100644
--- a/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TerminalEmulator.java
+++ b/libraries/emulatorview/src/jackpal/androidterm/emulatorview/TerminalEmulator.java
@@ -26,7 +26,7 @@ import java.nio.charset.CodingErrorAction;
import android.util.Log;
/**
- * Renders text into a screen. Contains all the terminal-specific knowlege and
+ * Renders text into a screen. Contains all the terminal-specific knowledge and
* state. Emulates a subset of the X Window System xterm terminal, which in turn
* is an emulator for a subset of the Digital Equipment Corporation vt100
* terminal. Missing functionality: text attributes (bold, underline, reverse
@@ -661,7 +661,7 @@ class TerminalEmulator {
break;
case ESC_LEFT_SQUARE_BRACKET:
- doEscLeftSquareBracket(b);
+ doEscLeftSquareBracket(b); // CSI
break;
case ESC_LEFT_SQUARE_BRACKET_QUESTION_MARK:
@@ -989,6 +989,7 @@ class TerminalEmulator {
}
private void doEscLeftSquareBracket(byte b) {
+ // CSI
switch (b) {
case '@': // ESC [ Pn @ - ICH Insert Characters
{
@@ -1461,16 +1462,17 @@ class TerminalEmulator {
}
private int getArg0(int defaultValue) {
- return getArg(0, defaultValue);
+ return getArg(0, defaultValue, true);
}
private int getArg1(int defaultValue) {
- return getArg(1, defaultValue);
+ return getArg(1, defaultValue, true);
}
- private int getArg(int index, int defaultValue) {
+ private int getArg(int index, int defaultValue,
+ boolean treatZeroAsDefault) {
int result = mArgs[index];
- if (result < 0) {
+ if (result < 0 || (result == 0 && treatZeroAsDefault)) {
result = defaultValue;
}
return result;