fix color code scanning
This commit is contained in:
parent
7d8a27fe14
commit
5fe960fda0
@ -203,8 +203,7 @@ ssize_t con_write(struct _reent *r,int fd,const char *ptr, size_t len) {
|
|||||||
do {
|
do {
|
||||||
chr = *(tmp++);
|
chr = *(tmp++);
|
||||||
i++; count++; escapelen++;
|
i++; count++; escapelen++;
|
||||||
int parameter, consumed, assigned;
|
int parameter, assigned, consumed;
|
||||||
bool scanning;
|
|
||||||
|
|
||||||
switch (chr) {
|
switch (chr) {
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
@ -274,12 +273,22 @@ ssize_t con_write(struct _reent *r,int fd,const char *ptr, size_t len) {
|
|||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
case 'm':
|
case 'm':
|
||||||
escapeseq++;
|
escapeseq++;
|
||||||
scanning = true;
|
escapelen--;
|
||||||
|
|
||||||
|
if (escapelen == 1) {
|
||||||
|
escaping = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (strchr(escapeseq,';')) {
|
||||||
|
sscanf(escapeseq,"%d;%n", ¶meter, &consumed);
|
||||||
|
} else {
|
||||||
|
sscanf(escapeseq,"%dm%n", ¶meter, &consumed);
|
||||||
|
}
|
||||||
|
|
||||||
// do while doesn't work at -O2
|
|
||||||
// do {
|
|
||||||
sscanf(escapeseq,"%d;%n", ¶meter, &consumed);
|
|
||||||
escapeseq += consumed;
|
escapeseq += consumed;
|
||||||
|
escapelen -= consumed;
|
||||||
|
|
||||||
if (parameter == 0 ) {
|
if (parameter == 0 ) {
|
||||||
currentConsole->flags |= CONSOLE_COLOR_BRIGHT;
|
currentConsole->flags |= CONSOLE_COLOR_BRIGHT;
|
||||||
@ -295,8 +304,7 @@ ssize_t con_write(struct _reent *r,int fd,const char *ptr, size_t len) {
|
|||||||
} else if (parameter >= 40 && parameter <= 47) { // screen color
|
} else if (parameter >= 40 && parameter <= 47) { // screen color
|
||||||
currentConsole->bg = parameter - 40;
|
currentConsole->bg = parameter - 40;
|
||||||
}
|
}
|
||||||
if(escapeseq >= tmp) scanning = false;
|
} while (escapelen > 0);
|
||||||
// } while(scanning);
|
|
||||||
|
|
||||||
escaping = false;
|
escaping = false;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user