mirror of
https://github.com/radareorg/radare2.git
synced 2024-12-09 05:54:57 +00:00
Add sj and s= commands
This commit is contained in:
parent
351df0c2b7
commit
7676272b18
@ -287,7 +287,9 @@ static int cmd_seek(void *data, const char *input) {
|
|||||||
r_core_seek_base (core, input);
|
r_core_seek_base (core, input);
|
||||||
break;
|
break;
|
||||||
case '*':
|
case '*':
|
||||||
r_io_sundo_list (core->io);
|
case '=':
|
||||||
|
case 'j':
|
||||||
|
r_io_sundo_list (core->io, input[0]);
|
||||||
break;
|
break;
|
||||||
case '+':
|
case '+':
|
||||||
if (input[1]!='\0') {
|
if (input[1]!='\0') {
|
||||||
|
@ -427,7 +427,7 @@ R_API ut64 r_io_sundo(RIO *io, ut64 offset);
|
|||||||
R_API ut64 r_io_sundo_redo(RIO *io);
|
R_API ut64 r_io_sundo_redo(RIO *io);
|
||||||
R_API void r_io_sundo_push(RIO *io, ut64 off);
|
R_API void r_io_sundo_push(RIO *io, ut64 off);
|
||||||
R_API void r_io_sundo_reset(RIO *io);
|
R_API void r_io_sundo_reset(RIO *io);
|
||||||
R_API void r_io_sundo_list(RIO *io);
|
R_API void r_io_sundo_list(RIO *io, int mode);
|
||||||
/* write undo */
|
/* write undo */
|
||||||
R_API void r_io_wundo_new(RIO *io, ut64 off, const ut8 *data, int len);
|
R_API void r_io_wundo_new(RIO *io, ut64 off, const ut8 *data, int len);
|
||||||
R_API void r_io_wundo_apply_all(RIO *io, int set);
|
R_API void r_io_wundo_apply_all(RIO *io, int set);
|
||||||
|
@ -87,7 +87,7 @@ R_API void r_io_sundo_reset(RIO *io) {
|
|||||||
io->undo.redos = 0;
|
io->undo.redos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
R_API void r_io_sundo_list(RIO *io) {
|
R_API void r_io_sundo_list(RIO *io, int mode) {
|
||||||
int idx, undos, redos, i, j, start, end;
|
int idx, undos, redos, i, j, start, end;
|
||||||
|
|
||||||
if (!io->undo.s_enable)
|
if (!io->undo.s_enable)
|
||||||
@ -104,16 +104,45 @@ R_API void r_io_sundo_list(RIO *io) {
|
|||||||
end = (idx + redos + 1) % R_IO_UNDOS;
|
end = (idx + redos + 1) % R_IO_UNDOS;
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
for (i = start; i != end || j == 0; i = (i + 1) % R_IO_UNDOS) {
|
switch (mode) {
|
||||||
if (j < undos) {
|
case 'j':
|
||||||
io->cb_printf ("f undo_%d @ 0x%"PFMT64x"\n", undos - j - 1, io->undo.seek[i]);
|
io->cb_printf ("[");
|
||||||
} else if (j == undos && j != 0 && redos != 0) {
|
break;
|
||||||
io->cb_printf ("# Current undo/redo position.\n");
|
}
|
||||||
} else if (j != undos) {
|
for (i = start; i < end || j == 0; i = (i + 1) % R_IO_UNDOS) {
|
||||||
io->cb_printf ("f redo_%d @ 0x%"PFMT64x"\n", j - undos - 1, io->undo.seek[i]);
|
int idx = (j< undos)? undos - j - 1: j - undos - 1;
|
||||||
|
ut64 addr = io->undo.seek[i];
|
||||||
|
ut64 notLast = j+1<undos && (i != end - 1);
|
||||||
|
switch (mode) {
|
||||||
|
case '=':
|
||||||
|
if (j < undos) {
|
||||||
|
io->cb_printf ("0x%"PFMT64x"%s", addr, notLast? " > ": "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
if (j < undos) {
|
||||||
|
io->cb_printf ("%"PFMT64d"%s", addr, notLast? ",": "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '*':
|
||||||
|
if (j < undos) {
|
||||||
|
io->cb_printf ("f undo_%d @ 0x%"PFMT64x"\n", idx, addr);
|
||||||
|
} else if (j == undos && j != 0 && redos != 0) {
|
||||||
|
io->cb_printf ("# Current undo/redo position.\n");
|
||||||
|
} else if (j != undos) {
|
||||||
|
io->cb_printf ("f redo_%d @ 0x%"PFMT64x"\n", idx, addr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
switch (mode) {
|
||||||
|
case '=':
|
||||||
|
io->cb_printf ("\n");
|
||||||
|
break;
|
||||||
|
case 'j':
|
||||||
|
io->cb_printf ("]\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* undo writez */
|
/* undo writez */
|
||||||
|
Loading…
Reference in New Issue
Block a user