← Commit list

62643017c

Denys Vlasenko
Denys Vlasenko
2017-09-13
SUCCESS Duration: 140s

Subject

hexedit: implement page up/down

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

miscutils/hexedit.c+13 -1
@@ -236,7 +236,7 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
redraw();
printf(ESC"[1;10H"); /* position on 1st hex byte in first line */
-//TODO: //PgUp/PgDown; Home/End: start/end of line; '<'/'>': start/end of file
+//TODO: //Home/End: start/end of line; '<'/'>': start/end of file
//Backspace: undo
//Enter: goto specified position
//Ctrl-L: redraw
@@ -249,12 +249,14 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
for (;;) {
char read_key_buffer[KEYCODE_BUFFER_SIZE];
+ unsigned cnt;
int32_t key;
uint8_t byte;
fflush_all();
key = read_key(STDIN_FILENO, read_key_buffer, -1);
+ cnt = 1;
switch (key) {
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
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)
putchar(' ');
}
break;
+ case KEYCODE_PAGEDOWN:
+ cnt = G.height;
case KEYCODE_DOWN:
+ k_down:
G.current_byte += 16;
if (G.current_byte >= G.eof_byte) {
move_mapping_further();
@@ -324,6 +329,8 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
row--;
redraw_cur_line();
}
+ if (--cnt)
+ goto k_down;
break;
case KEYCODE_LEFT:
@@ -348,7 +355,10 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
G.current_byte--;
printf(ESC"[2D");
break;
+ case KEYCODE_PAGEUP:
+ cnt = G.height;
case KEYCODE_UP:
+ k_up:
if ((G.current_byte - G.addr) < 16) {
move_mapping_lower();
if ((G.current_byte - G.addr) < 16)
@@ -364,6 +374,8 @@ int hexedit_main(int argc UNUSED_PARAM, char **argv)
printf(ESC"M"); /* scroll up */
redraw_cur_line();
}
+ if (--cnt)
+ goto k_up;
break;
}
}