diff options
Diffstat (limited to 'kernel/debug/kdb/kdb_io.c')
| -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)) { |