bios/main: handle all types of carriage return (\r, \n, \r\n or \n\r)
This commit is contained in:
parent
9f083e9bd3
commit
10624c26da
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue