bios/main: handle all types of carriage return (\r, \n, \r\n or \n\r)

This commit is contained in:
Florent Kermarrec 2018-10-09 10:06:32 +02:00
parent 9f083e9bd3
commit 10624c26da
1 changed files with 9 additions and 0 deletions

View File

@ -442,6 +442,7 @@ static void crcbios(void)
static void readstr(char *s, int size) static void readstr(char *s, int size)
{ {
static char skip = 0;
char c[2]; char c[2];
int ptr; int ptr;
@ -449,6 +450,9 @@ static void readstr(char *s, int size)
ptr = 0; ptr = 0;
while(1) { while(1) {
c[0] = readchar(); c[0] = readchar();
if (c[0] == skip)
continue;
skip = 0;
switch(c[0]) { switch(c[0]) {
case 0x7f: case 0x7f:
case 0x08: case 0x08:
@ -460,7 +464,12 @@ static void readstr(char *s, int size)
case 0x07: case 0x07:
break; break;
case '\r': case '\r':
skip = '\n';
s[ptr] = 0x00;
putsnonl("\n");
return;
case '\n': case '\n':
skip = '\r';
s[ptr] = 0x00; s[ptr] = 0x00;
putsnonl("\n"); putsnonl("\n");
return; return;