in core/src/com/jediterm/terminal/emulator/ControlSequence.java [38:94]
private void readControlSequence(final TerminalDataStream channel) throws IOException {
myArgc = 0;
// Read integer arguments
int digit = 0;
int seenDigit = 0;
int pos = -1;
while (true) {
final char b = channel.getChar();
mySequenceString.append(b);
pos++;
if (b == '!' && pos == 0) {
myStartsWithExclamationMark = true;
}
else if (b == '?' && pos == 0) {
myStartsWithQuestionMark = true;
}
else if (b == '>' && pos == 0) {
myStartsWithMoreMark = true;
}
else if (b == '=' && pos == 0) {
myStartsWithEqualsMark = true;
}
else if (b == ';') {
if (digit > 0) {
myArgc++;
if (myArgc == myArgv.length) {
int[] replacement = new int[myArgv.length * 2];
System.arraycopy(myArgv, 0, replacement, 0, myArgv.length);
myArgv = replacement;
}
myArgv[myArgc] = 0;
digit = 0;
}
}
else if ('0' <= b && b <= '9') {
myArgv[myArgc] = myArgv[myArgc] * 10 + b - '0';
digit++;
seenDigit = 1;
}
else if (0x20 <= b && b <= 0x2F) {
// Intermediate bytes - valid inside CSI but not parameters.
addIntermediate(b);
}
else if (':' <= b && b <= '?') {
addUnhandled(b);
}
else if (0x40 <= b && b <= 0x7E) {
myFinalChar = b;
break;
}
else {
addUnhandled(b);
}
}
myArgc += seenDigit;
}