diff options
author | Jack Palevich <jackpal@google.com> | 2012-09-22 20:48:36 -0700 |
---|---|---|
committer | Jack Palevich <jackpal@google.com> | 2012-09-22 20:48:36 -0700 |
commit | c99140a22c1a3276b42980f61b1b1c760fb3a488 (patch) | |
tree | d640504001430d5f4d330adcf69c1cb80ae1c832 | |
parent | cb3ec9be9d4513cab774a33cccd91ee198d54df4 (diff) | |
download | AndroidTerm-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.java | 14 |
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; |