diff options
| author | Ron Yorston <rmy@pobox.com> | 2014-04-09 20:26:52 +0100 |
|---|---|---|
| committer | Ron Yorston <rmy@pobox.com> | 2014-04-09 20:26:52 +0100 |
| commit | 612f6c6c4ef0ff01dfdb6c87712209e2f80d18b7 (patch) | |
| tree | a2e891b0e3a6651e977ce172331a29dc94bfd81c | |
| parent | c8f20188ae14ce2f9da8d263fbefbe88bda16075 (diff) | |
| download | busybox-w32-612f6c6c4ef0ff01dfdb6c87712209e2f80d18b7.tar.gz busybox-w32-612f6c6c4ef0ff01dfdb6c87712209e2f80d18b7.tar.bz2 busybox-w32-612f6c6c4ef0ff01dfdb6c87712209e2f80d18b7.zip | |
Implement escape sequence for cursor down
| -rw-r--r-- | win32/winansi.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/win32/winansi.c b/win32/winansi.c index 415105fcd..c47e29a28 100644 --- a/win32/winansi.c +++ b/win32/winansi.c | |||
| @@ -123,7 +123,7 @@ static void erase_till_end_of_screen(void) | |||
| 123 | pos, &dummy); | 123 | pos, &dummy); |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | static void move_cursor_up(int n) | 126 | static void move_cursor_row(int n) |
| 127 | { | 127 | { |
| 128 | CONSOLE_SCREEN_BUFFER_INFO sbi; | 128 | CONSOLE_SCREEN_BUFFER_INFO sbi; |
| 129 | 129 | ||
| @@ -131,11 +131,11 @@ static void move_cursor_up(int n) | |||
| 131 | return; | 131 | return; |
| 132 | 132 | ||
| 133 | GetConsoleScreenBufferInfo(console, &sbi); | 133 | GetConsoleScreenBufferInfo(console, &sbi); |
| 134 | sbi.dwCursorPosition.Y -= n; | 134 | sbi.dwCursorPosition.Y += n; |
| 135 | SetConsoleCursorPosition(console, sbi.dwCursorPosition); | 135 | SetConsoleCursorPosition(console, sbi.dwCursorPosition); |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | static void move_cursor_forward(int n) | 138 | static void move_cursor_column(int n) |
| 139 | { | 139 | { |
| 140 | CONSOLE_SCREEN_BUFFER_INFO sbi; | 140 | CONSOLE_SCREEN_BUFFER_INFO sbi; |
| 141 | 141 | ||
| @@ -147,18 +147,6 @@ static void move_cursor_forward(int n) | |||
| 147 | SetConsoleCursorPosition(console, sbi.dwCursorPosition); | 147 | SetConsoleCursorPosition(console, sbi.dwCursorPosition); |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | static void move_cursor_back(int n) | ||
| 151 | { | ||
| 152 | CONSOLE_SCREEN_BUFFER_INFO sbi; | ||
| 153 | |||
| 154 | if (!console) | ||
| 155 | return; | ||
| 156 | |||
| 157 | GetConsoleScreenBufferInfo(console, &sbi); | ||
| 158 | sbi.dwCursorPosition.X -= n; | ||
| 159 | SetConsoleCursorPosition(console, sbi.dwCursorPosition); | ||
| 160 | } | ||
| 161 | |||
| 162 | static void move_cursor(int x, int y) | 150 | static void move_cursor(int x, int y) |
| 163 | { | 151 | { |
| 164 | COORD pos; | 152 | COORD pos; |
| @@ -309,14 +297,17 @@ static const char *set_attr(const char *str) | |||
| 309 | 297 | ||
| 310 | set_console_attr(); | 298 | set_console_attr(); |
| 311 | break; | 299 | break; |
| 312 | case 'A': | 300 | case 'A': /* up */ |
| 313 | move_cursor_up(strtol(str, (char **)&str, 10)); | 301 | move_cursor_row(-strtol(str, (char **)&str, 10)); |
| 302 | break; | ||
| 303 | case 'B': /* down */ | ||
| 304 | move_cursor_row(strtol(str, (char **)&str, 10)); | ||
| 314 | break; | 305 | break; |
| 315 | case 'C': | 306 | case 'C': /* forward */ |
| 316 | move_cursor_forward(strtol(str, (char **)&str, 10)); | 307 | move_cursor_column(strtol(str, (char **)&str, 10)); |
| 317 | break; | 308 | break; |
| 318 | case 'D': | 309 | case 'D': /* back */ |
| 319 | move_cursor_back(strtol(str, (char **)&str, 10)); | 310 | move_cursor_column(-strtol(str, (char **)&str, 10)); |
| 320 | break; | 311 | break; |
| 321 | case 'H': | 312 | case 'H': |
| 322 | if (!len) | 313 | if (!len) |
