diff --git a/env.sh b/env.sh index 9230b9854fb5c..aee5291f17dd5 100755 --- a/env.sh +++ b/env.sh @@ -13,7 +13,7 @@ echo echo $new_env $SHELL \ | sed -e 's, ,\n,g' \ | sed -e 's,^, ,g' \ - | sed -e 's,$,\\,' + | sed -e 's,$, \\,' echo eval $new_env $SHELL diff --git a/libr/core/cmd.c b/libr/core/cmd.c index 0f8ae193715ca..9e6541148c9a7 100644 --- a/libr/core/cmd.c +++ b/libr/core/cmd.c @@ -136,7 +136,8 @@ static int cmd_seek(void *data, const char *input) if (input[0]=='\0') { r_cons_printf("0x%llx\n", core->seek); } else { - u64 off = r_num_math(&core->num, input+1); + int idelta = (input[1]==' ')?2:1; + u64 off = r_num_math(&core->num, input+idelta); switch(input[0]) { case ' ': r_core_seek(core, off); @@ -345,7 +346,7 @@ static int cmd_print(void *data, const char *input) r_print_bytes(&core->print, core->block, len, "%02x"); break; default: - fprintf(stderr, "Usage: p[8] [len]\n" + r_cons_printf("Usage: p[8] [len]\n" " p8 [len] 8bit hexpair list of bytes\n" " px [len] hexdump of N bytes\n" " po [len] octal dump of N bytes\n" @@ -367,7 +368,6 @@ static int cmd_flag(void *data, const char *input) { struct r_core_t *core = (struct r_core_t *)data; int len = strlen(input)+1; - char *ptr; char *str = alloca(len); memcpy(str, input+1, len); diff --git a/libr/core/config.c b/libr/core/config.c index f44aa0bb4bd78..270cbe0426e54 100644 --- a/libr/core/config.c +++ b/libr/core/config.c @@ -102,6 +102,7 @@ int r_core_config_init(struct r_core_t *core) config_set("cmd.touchtrace", ""); #endif r_config_set(cfg, "cmd.prompt", ""); + r_config_set(cfg, "cmd.visual", "? f && ?? s eip"); r_config_set(cfg, "cmd.vprompt", "p%"); r_config_set(cfg, "cmd.vprompt2", "CFV"); r_config_set(cfg, "cmd.vprompt3", ""); diff --git a/libr/core/core.c b/libr/core/core.c index 640994290c410..e321a9aafb860 100644 --- a/libr/core/core.c +++ b/libr/core/core.c @@ -126,6 +126,7 @@ int r_core_init(struct r_core_t *core) core->num.callback = &num_callback; core->num.userptr = core; r_print_init(&core->print); + core->print.printf = r_cons_printf; r_lang_init(&core->lang); r_lang_set_user_ptr(&core->lang, core); r_anal_init(&core->anal); @@ -247,12 +248,12 @@ int r_core_seek_delta(struct r_core_t *core, s64 addr) /* check end of file */ if (0) { // tmp+addr>) { addr = 0; - } else addr+=tmp; + } else addr += tmp; } else { /* check < 0 */ if (tmp+addr<0) { addr = 0; - } else addr+=tmp; + } else addr += tmp; } core->seek = addr; ret = r_core_block_read(core, 0); diff --git a/libr/core/t/radare2.c b/libr/core/t/radare2.c index 57618201e08e9..5f1af6a448963 100644 --- a/libr/core/t/radare2.c +++ b/libr/core/t/radare2.c @@ -127,7 +127,8 @@ int main(int argc, char **argv) r_core_cmd(&r, ".dr*", 0); r_core_cmd(&r, "s eip", 0); r_core_cmd(&r, "e cmd.prompt=.dr",0); - r_core_cmd(&r, "\"e cmd.vprompt=.dr&&s eip\"",0); + r_core_cmd(&r, "\"e cmd.vprompt=.dr\"",0); + r_core_cmd(&r, "\"e cmd.visual=.dr&&s eip\"",0); } if (seek) diff --git a/libr/core/visual.c b/libr/core/visual.c index 1b4fbd6362127..ee1ea7aa3836a 100644 --- a/libr/core/visual.c +++ b/libr/core/visual.c @@ -60,7 +60,7 @@ int r_core_visual_cmd(struct r_core_t *core, int ch) if (ocursor ==-1) ocursor=cursor; cursor--; } else - r_core_cmd(core, "s- 2", 0); + r_core_cmd(core, "s-2", 0); break; case 'J': if (curset) { @@ -81,26 +81,26 @@ int r_core_visual_cmd(struct r_core_t *core, int ch) if (ocursor ==-1) ocursor=cursor; cursor++; } else - r_core_cmd(core, "s+ 2", 0); + r_core_cmd(core, "s+2", 0); break; /* move */ case 'h': if (curset) { cursor--; ocursor=-1; - } else r_core_cmd(core, "s- 1", 0); + } else r_core_cmd(core, "s-1", 0); break; case 'l': if (curset) { cursor++; ocursor=-1; - } else r_core_cmd(core, "s+ 1", 0); + } else r_core_cmd(core, "s+1", 0); break; case 'j': if (curset) { cursor+=16; ocursor=-1; - } else r_core_cmd(core, "s+ 16", 0); + } else r_core_cmd(core, "s+16", 0); break; case 'k': if (curset) { @@ -170,6 +170,9 @@ int r_core_visual(struct r_core_t *core, const char *input) { int ch; + char *vi = r_config_get(&core->config, "cmd.visual"); + if (vi) r_core_cmd(core, vi, 0); + while(input[0]) { if (!r_core_visual_cmd(core, input[0])) { r_cons_clear00();