mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-03 04:05:06 +00:00
Improve visual mark ##visual
This commit is contained in:
parent
8cb2ad402b
commit
c42d25c255
@ -562,9 +562,12 @@ rep:
|
||||
break;
|
||||
case ' ':
|
||||
{
|
||||
const char *arg = strchr (input+2, ' ');
|
||||
ut64 addr = arg? r_num_math (core->num, arg): core->offset;
|
||||
r_core_visual_mark_set (core, atoi (input+1), addr);
|
||||
const int ASCII_MAX = 127;
|
||||
if (atoi (input+1) + ASCII_MAX + 1 < UT8_MAX) {
|
||||
const char *arg = strchr (input+2, ' ');
|
||||
ut64 addr = arg? r_num_math (core->num, arg): core->offset;
|
||||
r_core_visual_mark_set (core, atoi (input+1) + ASCII_MAX + 1, addr);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '?':
|
||||
|
@ -3074,10 +3074,34 @@ R_API int r_core_visual_cmd(RCore *core, const char *arg) {
|
||||
//r_core_cmd0 (core, "=H");
|
||||
break;
|
||||
case 'm':
|
||||
r_core_visual_mark (core, r_cons_readchar ());
|
||||
{
|
||||
r_cons_gotoxy (0, 0);
|
||||
r_cons_printf (R_CONS_CLEAR_LINE"Set shortcut key for 0x%"PFMT64x"\n", core->offset);
|
||||
r_cons_flush ();
|
||||
int ch = r_cons_readchar ();
|
||||
r_core_visual_mark (core, ch);
|
||||
}
|
||||
break;
|
||||
case 'M':
|
||||
{
|
||||
r_cons_gotoxy (0, 0);
|
||||
if (r_core_visual_mark_dump (core)) {
|
||||
r_cons_printf (R_CONS_CLEAR_LINE"Remove a shortcut key from the list\n");
|
||||
r_cons_flush ();
|
||||
int ch = r_cons_readchar ();
|
||||
r_core_visual_mark_del (core, ch);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case '\'':
|
||||
r_core_visual_mark_seek (core, r_cons_readchar ());
|
||||
{
|
||||
r_cons_gotoxy (0, 0);
|
||||
if (r_core_visual_mark_dump (core)) {
|
||||
r_cons_flush ();
|
||||
int ch = r_cons_readchar ();
|
||||
r_core_visual_mark_seek (core, ch);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'y':
|
||||
if (core->print->ocur == -1) {
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
#include <r_core.h>
|
||||
|
||||
#define ASCII_MAX 127
|
||||
|
||||
/* maybe move this into RCore */
|
||||
static bool marks_init = false;
|
||||
static ut64 marks[UT8_MAX + 1];
|
||||
@ -14,16 +16,23 @@ R_API void r_core_visual_mark_reset(RCore *core) {
|
||||
}
|
||||
}
|
||||
|
||||
R_API void r_core_visual_mark_dump(RCore *core) {
|
||||
R_API bool r_core_visual_mark_dump(RCore *core) {
|
||||
int i;
|
||||
bool out = false;
|
||||
if (!marks_init) {
|
||||
return;
|
||||
return out;
|
||||
}
|
||||
for (i = 0; i < UT8_MAX; i++) {
|
||||
if (marks[i] != UT64_MAX) {
|
||||
r_cons_printf ("fV %d 0x%"PFMT64x"\n", i, marks[i]);
|
||||
if (i > ASCII_MAX) {
|
||||
r_cons_printf ("fV %d 0x%"PFMT64x"\n", i - ASCII_MAX - 1, marks[i]);
|
||||
} else {
|
||||
r_cons_printf ("fV %c 0x%"PFMT64x"\n", i, marks[i]);
|
||||
}
|
||||
out = true;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
R_API void r_core_visual_mark_set(RCore *core, ut8 ch, ut64 addr) {
|
||||
@ -33,7 +42,17 @@ R_API void r_core_visual_mark_set(RCore *core, ut8 ch, ut64 addr) {
|
||||
marks[ch] = addr;
|
||||
}
|
||||
|
||||
R_API void r_core_visual_mark_del(RCore *core, ut8 ch) {
|
||||
if (!marks_init) {
|
||||
return;
|
||||
}
|
||||
marks[ch] = UT64_MAX;
|
||||
}
|
||||
|
||||
R_API void r_core_visual_mark(RCore *core, ut8 ch) {
|
||||
if (IS_DIGIT (ch)) {
|
||||
ch += ASCII_MAX + 1;
|
||||
}
|
||||
r_core_visual_mark_set (core, ch, core->offset);
|
||||
}
|
||||
|
||||
|
@ -442,7 +442,8 @@ R_API void r_core_visual_list(RCore *core, RList* list, ut64 seek, ut64 len, int
|
||||
R_API void r_core_visual_mark_seek(RCore *core, ut8 ch);
|
||||
R_API void r_core_visual_mark(RCore *core, ut8 ch);
|
||||
R_API void r_core_visual_mark_set(RCore *core, ut8 ch, ut64 addr);
|
||||
R_API void r_core_visual_mark_dump(RCore *core);
|
||||
R_API void r_core_visual_mark_del(RCore *core, ut8 ch);
|
||||
R_API bool r_core_visual_mark_dump(RCore *core);
|
||||
R_API void r_core_visual_mark_reset(RCore *core);
|
||||
|
||||
R_API int r_core_search_cb(RCore *core, ut64 from, ut64 to, RCoreSearchCallback cb);
|
||||
|
Loading…
x
Reference in New Issue
Block a user