diff options
| author | Colin Cross <ccross@android.com> | 2012-03-14 19:26:53 -0700 | 
|---|---|---|
| committer | Arve Hjønnevåg <arve@android.com> | 2013-07-01 13:40:40 -0700 | 
| commit | c8c747cb29e2f373afd0f8fb50e620741c9aa1a5 (patch) | |
| tree | 24362b0daa1d6bcce7cbade662716bd0c66c6628 | |
| parent | 182260c501354fc961e63607012acb54caa361fd (diff) | |
| download | olio-linux-3.10-c8c747cb29e2f373afd0f8fb50e620741c9aa1a5.tar.xz olio-linux-3.10-c8c747cb29e2f373afd0f8fb50e620741c9aa1a5.zip | |
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>
| -rw-r--r-- | kernel/debug/kdb/kdb_io.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c index 14ff4849262..4b0fb2fb779 100644 --- a/kernel/debug/kdb/kdb_io.c +++ b/kernel/debug/kdb/kdb_io.c @@ -216,7 +216,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) @@ -237,6 +237,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) { @@ -254,7 +257,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)) { |