mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-09 07:42:25 +00:00
Improve visual mark ##visual
This commit is contained in:
parent
8cb2ad402b
commit
c42d25c255
@ -562,9 +562,12 @@ rep:
|
|||||||
break;
|
break;
|
||||||
case ' ':
|
case ' ':
|
||||||
{
|
{
|
||||||
const char *arg = strchr (input+2, ' ');
|
const int ASCII_MAX = 127;
|
||||||
ut64 addr = arg? r_num_math (core->num, arg): core->offset;
|
if (atoi (input+1) + ASCII_MAX + 1 < UT8_MAX) {
|
||||||
r_core_visual_mark_set (core, atoi (input+1), addr);
|
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;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
|
@ -3074,10 +3074,34 @@ R_API int r_core_visual_cmd(RCore *core, const char *arg) {
|
|||||||
//r_core_cmd0 (core, "=H");
|
//r_core_cmd0 (core, "=H");
|
||||||
break;
|
break;
|
||||||
case 'm':
|
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;
|
break;
|
||||||
case '\'':
|
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;
|
break;
|
||||||
case 'y':
|
case 'y':
|
||||||
if (core->print->ocur == -1) {
|
if (core->print->ocur == -1) {
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
#include <r_core.h>
|
#include <r_core.h>
|
||||||
|
|
||||||
|
#define ASCII_MAX 127
|
||||||
|
|
||||||
/* maybe move this into RCore */
|
/* maybe move this into RCore */
|
||||||
static bool marks_init = false;
|
static bool marks_init = false;
|
||||||
static ut64 marks[UT8_MAX + 1];
|
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;
|
int i;
|
||||||
|
bool out = false;
|
||||||
if (!marks_init) {
|
if (!marks_init) {
|
||||||
return;
|
return out;
|
||||||
}
|
}
|
||||||
for (i = 0; i < UT8_MAX; i++) {
|
for (i = 0; i < UT8_MAX; i++) {
|
||||||
if (marks[i] != UT64_MAX) {
|
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) {
|
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;
|
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) {
|
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);
|
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_seek(RCore *core, ut8 ch);
|
||||||
R_API void r_core_visual_mark(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_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 void r_core_visual_mark_reset(RCore *core);
|
||||||
|
|
||||||
R_API int r_core_search_cb(RCore *core, ut64 from, ut64 to, RCoreSearchCallback cb);
|
R_API int r_core_search_cb(RCore *core, ut64 from, ut64 to, RCoreSearchCallback cb);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user