mirror of
https://github.com/netfun2000/lcd4linux.git
synced 2026-02-27 09:44:34 +08:00
patch to support hex sequences from Marcus Menzel
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@1186 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
This commit is contained in:
+38
@@ -631,6 +631,44 @@ static void Parse(void)
|
||||
Word[length++] = '\r';
|
||||
ExprPtr += 2;
|
||||
break;
|
||||
case 'x':
|
||||
{
|
||||
int i;
|
||||
char hexC;
|
||||
int hex[2];
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
hexC = *(ExprPtr + 2 + i);
|
||||
if (hexC >= '0' && hexC <= '9')
|
||||
hex[i] = hexC - '0';
|
||||
else if (hexC >= 'a' && hexC <= 'f')
|
||||
hex[i] = hexC - 'a' + 10;
|
||||
else if (hexC >= 'A' && hexC <= 'F')
|
||||
hex[i] = hexC - 'A' + 10;
|
||||
else
|
||||
break;
|
||||
}
|
||||
switch (i) {
|
||||
case 1:
|
||||
Word[length] = hex[0];
|
||||
ExprPtr += 3;
|
||||
break;
|
||||
case 2:
|
||||
Word[length] = hex[0] * 16 + hex[1];
|
||||
ExprPtr += 4;
|
||||
break;
|
||||
default:
|
||||
error("Evaluator: Illegal hex sequence '\\x%c' in <%s> keeps unchanged.",
|
||||
*(ExprPtr + 2), Expression);
|
||||
Word[length] = '\\';
|
||||
ExprPtr += 1;
|
||||
}
|
||||
if (Word[length] == 0)
|
||||
error("Evaluator: Null character(s) in <%s> will be ignored.", Expression);
|
||||
else
|
||||
length++;
|
||||
}
|
||||
break;
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
|
||||
Reference in New Issue
Block a user