aboutsummaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-09-13 23:02:51 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-09-13 23:02:51 +0200
commit62643017c3d5bc1bb9fff91553e52a47e7730a01 (patch)
tree142224bb30ff225f09c0454cf14585a66d302788 /miscutils
parent8187e0143874e1bf0412263e716cf8c782a5aa16 (diff)
downloadbusybox-w32-62643017c3d5bc1bb9fff91553e52a47e7730a01.tar.gz
busybox-w32-62643017c3d5bc1bb9fff91553e52a47e7730a01.tar.bz2
busybox-w32-62643017c3d5bc1bb9fff91553e52a47e7730a01.zip
hexedit: implement page up/down
function old new delta hexedit_main 924 970 +46 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r--miscutils/hexedit.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/miscutils/hexedit.c b/miscutils/hexedit.c
index ac38978fd..a99569706 100644
--- a/miscutils/hexedit.c
+++ b/miscutils/hexedit.c
@@ -236,7 +236,7 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
236 redraw(); 236 redraw();
237 printf(ESC"[1;10H"); /* position on 1st hex byte in first line */ 237 printf(ESC"[1;10H"); /* position on 1st hex byte in first line */
238 238
239//TODO: //PgUp/PgDown; Home/End: start/end of line; '<'/'>': start/end of file 239//TODO: //Home/End: start/end of line; '<'/'>': start/end of file
240 //Backspace: undo 240 //Backspace: undo
241 //Enter: goto specified position 241 //Enter: goto specified position
242 //Ctrl-L: redraw 242 //Ctrl-L: redraw
@@ -249,12 +249,14 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
249 249
250 for (;;) { 250 for (;;) {
251 char read_key_buffer[KEYCODE_BUFFER_SIZE]; 251 char read_key_buffer[KEYCODE_BUFFER_SIZE];
252 unsigned cnt;
252 int32_t key; 253 int32_t key;
253 uint8_t byte; 254 uint8_t byte;
254 255
255 fflush_all(); 256 fflush_all();
256 key = read_key(STDIN_FILENO, read_key_buffer, -1); 257 key = read_key(STDIN_FILENO, read_key_buffer, -1);
257 258
259 cnt = 1;
258 switch (key) { 260 switch (key) {
259 case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': 261 case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
260 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': 262 case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
@@ -307,7 +309,10 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
307 putchar(' '); 309 putchar(' ');
308 } 310 }
309 break; 311 break;
312 case KEYCODE_PAGEDOWN:
313 cnt = G.height;
310 case KEYCODE_DOWN: 314 case KEYCODE_DOWN:
315 k_down:
311 G.current_byte += 16; 316 G.current_byte += 16;
312 if (G.current_byte >= G.eof_byte) { 317 if (G.current_byte >= G.eof_byte) {
313 move_mapping_further(); 318 move_mapping_further();
@@ -324,6 +329,8 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
324 row--; 329 row--;
325 redraw_cur_line(); 330 redraw_cur_line();
326 } 331 }
332 if (--cnt)
333 goto k_down;
327 break; 334 break;
328 335
329 case KEYCODE_LEFT: 336 case KEYCODE_LEFT:
@@ -348,7 +355,10 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
348 G.current_byte--; 355 G.current_byte--;
349 printf(ESC"[2D"); 356 printf(ESC"[2D");
350 break; 357 break;
358 case KEYCODE_PAGEUP:
359 cnt = G.height;
351 case KEYCODE_UP: 360 case KEYCODE_UP:
361 k_up:
352 if ((G.current_byte - G.addr) < 16) { 362 if ((G.current_byte - G.addr) < 16) {
353 move_mapping_lower(); 363 move_mapping_lower();
354 if ((G.current_byte - G.addr) < 16) 364 if ((G.current_byte - G.addr) < 16)
@@ -364,6 +374,8 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
364 printf(ESC"M"); /* scroll up */ 374 printf(ESC"M"); /* scroll up */
365 redraw_cur_line(); 375 redraw_cur_line();
366 } 376 }
377 if (--cnt)
378 goto k_up;
367 break; 379 break;
368 } 380 }
369 } 381 }