Handle leading zeroes in CSI codes

This commit is contained in:
Kovid Goyal 2016-11-30 08:50:55 +05:30
parent d132ba5a48
commit 56cfc7df3b
2 changed files with 9 additions and 1 deletions

View File

@ -15,9 +15,16 @@ static unsigned int pow10[10] = {
static inline unsigned int
utoi(uint32_t *buf, unsigned int sz) {
unsigned int ans = 0;
uint32_t *p = buf;
// Ignore leading zeros
while(sz > 0) {
printf("*p=%c\n", *p);
if (*p == '0') { p++; sz--; }
else break;
}
if (sz < sizeof(pow10)/sizeof(pow10[10])) {
for (int i = sz-1, j=0; i >=0; i--, j++) {
ans += (buf[i] - '0') * pow10[j];
ans += (p[i] - '0') * pow10[j];
}
}
return ans;

View File

@ -85,6 +85,7 @@ class TestParser(BaseTest):
pb('\033[4H', ('screen_cursor_position', 4, 1))
pb('\033[3;2H', ('screen_cursor_position', 3, 2))
pb('\033[3;2;H', ('screen_cursor_position', 3, 2))
pb('\033[00000000003;0000000000000002H', ('screen_cursor_position', 3, 2))
self.ae(s.cursor.x, 1), self.ae(s.cursor.y, 2)
pb('\033[J', ('screen_erase_in_display', 0, 0))
pb('\033[?J', ('screen_erase_in_display', 0, 1))