ANDROID: kdb: support new lines without carriage returns
kdb expects carriage returns through the serial port to terminate commands. Modify it to accept the first seen carriage return or new line as a terminator, but not treat \r\n as two terminators. Change-Id: I06166017e7703d24310eefcb71c3a7d427088db7 Signed-off-by: Colin Cross <ccross@android.com>
This commit is contained in:
1 parent
b01f4f8567
commit
da5453d178
1 file changed
+10
-2
@@ -217,7 +217,7 @@ static char *kdb_read(char *buffer, size_t bufsize)
|
||||
int i;
|
||||
int diag, dtab_count;
|
||||
int key;
|
||||
|
||||
static int last_crlf;
|
||||
|
||||
diag = kdbgetintenv("DTABCOUNT", &dtab_count);
|
||||
if (diag)
|
||||
@@ -238,6 +238,9 @@ poll_again:
|
||||
return buffer;
|
||||
if (key != 9)
|
||||
tab = 0;
|
||||
if (key != 10 && key != 13)
|
||||
last_crlf = 0;
|
||||
|
||||
switch (key) {
|
||||
case 8: /* backspace */
|
||||
if (cp > buffer) {
|
||||
@@ -255,7 +258,12 @@ poll_again:
|
||||
*cp = tmp;
|
||||
}
|
||||
break;
|
||||
case 13: /* enter */
|
||||
case 10: /* new line */
|
||||
case 13: /* carriage return */
|
||||
/* handle \n after \r */
|
||||
if (last_crlf && last_crlf != key)
|
||||
break;
|
||||
last_crlf = key;
|
||||
*lastchar++ = '\n';
|
||||
*lastchar++ = '\0';
|
||||
if (!KDB_STATE(KGDB_TRANS)) {
|
||||
|
||||
Reference in new issue
Block a user