Beispiel #1
0
R_API void r_core_visual_prompt_input (RCore *core) {
	int ret;
	ut64 addr = core->offset;
	ut64 bsze = core->blocksize;

	r_cons_reset_colors();
	r_cons_printf("\nPress <enter> to return to Visual mode.\n");

	r_cons_show_cursor (true);
	core->vmode = false;
	ut64 newaddr = addr;
	if (curset) {
		if (ocursor != -1) {
			newaddr = core->offset + ocursor;
			r_core_block_size (core, cursor-ocursor);
		} else newaddr = core->offset + cursor;
		r_core_seek (core, newaddr, 1);
	}
	do {
		ret = r_core_visual_prompt (core);
		if (core->offset != newaddr) {
			// do not restore seek anymore
			newaddr = addr;
		}
	} while (ret);
	if (curset) {
		if (addr != newaddr) {
			r_core_seek (core, addr, 1);
			r_core_block_size (core, bsze);
		}
	}
	r_cons_show_cursor (false);
	core->vmode = true;
}
Beispiel #2
0
R_API void r_core_visual_prompt_input (RCore *core) {
	int ret;
	eprintf ("Press <enter> to return to Visual mode.\n");
	do {
		ut64 addr = core->offset;
		ut64 bsze = core->blocksize;
		if (curset) {
			if (ocursor != -1) {
				r_core_block_size (core, cursor-ocursor);
				r_core_seek (core, core->offset + ocursor, 1);
			} else r_core_seek (core, core->offset + cursor, 1);
		}
		ret = r_core_visual_prompt (core);
		if (curset) {
			r_core_seek (core, addr, 1);
			r_core_block_size (core, bsze);
		}
	} while (ret);
}