6 #include "../core_private.h"
8 #define PANEL_NUM_LIMIT 9
10 #define PANEL_TITLE_SYMBOLS "Symbols"
11 #define PANEL_TITLE_STACK "Stack"
12 #define PANEL_TITLE_XREFS_HERE "Xrefs Here"
13 #define PANEL_TITLE_XREFS "Xrefs"
14 #define PANEL_TITLE_REGISTERS "Registers"
15 #define PANEL_TITLE_DISASSEMBLY "Disassembly"
16 #define PANEL_TITLE_DISASMSUMMARY "Disassemble Summary"
17 #define PANEL_TITLE_GRAPH "Graph"
18 #define PANEL_TITLE_TINY_GRAPH "Tiny Graph"
19 #define PANEL_TITLE_FUNCTIONS "Functions"
20 #define PANEL_TITLE_FUNCTIONCALLS "Function Calls"
21 #define PANEL_TITLE_BREAKPOINTS "Breakpoints"
22 #define PANEL_TITLE_STRINGS_DATA "Strings in data sections"
23 #define PANEL_TITLE_STRINGS_BIN "Strings in the whole bin"
24 #define PANEL_TITLE_SECTIONS "Sections"
25 #define PANEL_TITLE_SEGMENTS "Segments"
26 #define PANEL_TITLE_COMMENTS "Comments"
28 #define PANEL_CMD_SYMBOLS "isq"
29 #define PANEL_CMD_XREFS "axl"
30 #define PANEL_CMD_STACK "px"
31 #define PANEL_CMD_REGISTERS "?== true `e cfg.debug`; ?! dr; ?? ar"
32 #define PANEL_CMD_DISASSEMBLY "pd"
33 #define PANEL_CMD_DISASMSUMMARY "pdsf"
34 #define PANEL_CMD_FUNCTION "afl"
35 #define PANEL_CMD_GRAPH "agf"
36 #define PANEL_CMD_TINYGRAPH "agft"
37 #define PANEL_CMD_HEXDUMP "xc"
38 #define PANEL_CMD_CONSOLE "$console"
40 #define PANEL_CONFIG_MENU_MAX 64
41 #define PANEL_CONFIG_PAGE 10
42 #define PANEL_CONFIG_SIDEPANEL_W 60
43 #define PANEL_CONFIG_RESIZE_W 4
44 #define PANEL_CONFIG_RESIZE_H 4
46 #define COUNT(x) (sizeof((x)) / sizeof((*x)) - 1)
58 "Disassembly",
"Stack",
"Registers",
63 "Disassembly",
"Functions",
"Symbols",
68 "File",
"Settings",
"Edit",
"View",
"Tools",
"Search",
"Emulate",
"Debug",
"Analyze",
"Help",
74 "New",
"Open",
"ReOpen",
"Close",
"Save Layout",
"Load Layout",
"Clear Saved Layouts",
"Quit",
79 "Colors",
"Disassembly",
"Screen",
84 "In RW",
"In Debugger",
94 "Copy",
"Paste",
"Clipboard",
"Write String",
"Write Hex",
"Write Value",
"Assemble",
"Fill",
"io.cache",
104 "Console",
"Hexdump",
"Disassembly",
"Disassemble Summary",
"Graph",
"Tiny Graph",
106 "Info",
"Database",
"Breakpoints",
"Comments",
"Classes",
"Entropy",
"Entropy Fire",
"Stack",
"Xrefs Here",
"Methods",
107 "Var READ address",
"Var WRITE address",
"Summary",
"Relocs",
"Headers",
"File Hashes",
112 "Calculator",
"Rizin Shell",
"System Shell",
117 "String (Whole Bin)",
"String (Data Sections)",
"ROP",
"Code",
"Hexpairs",
122 "Step From",
"Step To",
"Step Range",
127 "Registers",
"RegisterRefs",
"DRX",
"Breakpoints",
"Watchpoints",
128 "Maps",
"Modules",
"Backtrace",
"Locals",
"Continue",
129 "Step",
"Step Over",
"Reload",
134 "Function",
"Symbols",
"Program",
"Calls",
"References",
141 "asm",
"hex.section",
"io.cache",
"hex.pairs",
"emu.str",
146 "asm.bytes",
"asm.section",
"asm.cmt.right",
"asm.emu",
"asm.var.summary",
147 "asm.pseudo",
"asm.flags.inbytes",
"asm.arch",
"asm.bits",
"asm.cpu",
152 "scr.bgfill",
"scr.color",
"scr.utf8",
"scr.utf8.curvy",
"scr.wheel",
158 "License",
"Version",
164 "",
"2",
"b",
"c",
"d",
"e",
"F",
"i",
"j",
"m",
"p",
"s",
"z",
"0",
169 "xc",
"pxa",
"pxr",
"prx",
"pxb",
"pxh",
"pxw",
"pxq",
"pxd",
"pxr",
174 "",
"=",
"r",
"??",
"C",
"i",
"o",
184 "pddo",
"agf",
"Help",
189 "|",
"split the current panel vertically",
190 "-",
"split the current panel horizontally",
191 ":",
"run rizin command in prompt",
192 ";",
"add/remove comment",
193 "_",
"start the hud input mode",
194 "\\",
"show the user-friendly hud",
195 "?",
"show this help",
196 ".",
"seek to PC or entrypoint",
197 "\"",
"create a panel from the list and replace the current one",
198 "/",
"highlight the keyword",
201 "[1-9]",
"follow jmp/call identified by shortcut (like ;[1])",
202 "' '",
"(space) toggle graph / panels",
203 "tab",
"go to the next panel",
204 "Enter",
"start Zoom mode",
205 "b",
"browse symbols, flags, configurations, classes, ...",
206 "c",
"toggle cursor",
208 "d",
"define in the current address. Same as Vd",
209 "D",
"show disassembly in the current panel",
210 "e",
"change title and command of current panel",
211 "f",
"set/add filter keywords",
212 "F",
"remove all the filters",
213 "g",
"go/seek to given offset",
214 "G",
"go/seek to highlight",
216 "hjkl",
"move around (left-down-up-right)",
217 "HJKL",
"move around (left-down-up-right) by page",
218 "m",
"select the menu panel",
219 "M",
"open new custom frame",
220 "n/N",
"seek next/prev function/flag/hit (scr.nkey)",
221 "p/P",
"rotate panel layout",
222 "q",
"quit, or close a tab",
223 "Q",
"close all the tabs and quit",
224 "r",
"toggle callhints/jmphints/leahints",
225 "R",
"randomize color palette (ecr)",
226 "s/S",
"step in / step over",
227 "t/T",
"tab prompt / close a tab",
228 "u/U",
"undo / redo seek",
229 "w",
"start Window mode",
230 "V",
"go to the graph mode",
231 "xX",
"show xrefs/refs of current function from/to data/code",
232 "z",
"swap current panel with the first one",
237 ":",
"run rizin command in prompt",
238 ";",
"add/remove comment",
239 "\"",
"create a panel from the list and replace the current one",
240 "?",
"show this help",
241 "|",
"split the current panel vertically",
242 "-",
"split the current panel horizontally",
243 "tab",
"go to the next panel",
244 "Enter",
"start Zoom mode",
245 "d",
"define in the current address. Same as Vd",
246 "b",
"browse symbols, flags, configurations, classes, ...",
247 "hjkl",
"move around (left-down-up-right)",
248 "HJKL",
"resize panels vertically/horizontally",
249 "Q/q/w",
"quit Window mode",
250 "p/P",
"rotate panel layout",
251 "t/T",
"rotate related commands in a panel",
252 "X",
"close current panel",
257 "?",
"show this help",
258 ":",
"run rizin command in prompt",
259 ";",
"add/remove comment",
260 "\"",
"create a panel from the list and replace the current one",
261 "' '",
"(space) toggle graph / panels",
262 "tab",
"go to the next panel",
263 "b",
"browse symbols, flags, configurations, classes, ...",
264 "d",
"define in the current address. Same as Vd",
265 "c",
"toggle cursor",
267 "hjkl",
"move around (left-down-up-right)",
268 "p/P",
"seek to next or previous scr.nkey",
269 "s/S",
"step in / step over",
270 "t/T",
"rotate related commands in a panel",
271 "xX",
"show xrefs/refs of current function from/to data/code",
272 "q/Q/Enter",
"quit Zoom mode",
467 static int __rw_cb(
void *user);
557 static int cmpstr(
const void *_a,
const void *_b);
625 for (j = 0; j < panels->
n_panels; j++) {
646 for (j = 0; j < panels->
n_panels; j++) {
659 const int edge_x = 1;
660 if (x <= edge_x || can->
w - edge_x <=
x) {
669 const int edge_y = 0;
670 if (y <= edge_y || can->
h - edge_y <= y) {
682 if (
x > panel->
view->
pos.
x - (edge_x - 1) && x <= panel->view->pos.x + edge_x) {
697 if (
x > panel->
view->
pos.
x && x <= panel->view->pos.x + panel->
view->
pos.
w + edge_y) {
698 if (y > 2 && y >= panel->
view->
pos.
y && y <= panel->view->pos.y + edge_y) {
886 free(
p->model->cmdStrCache);
887 p->model->cmdStrCache =
s;
893 free(
p->model->readOnly);
934 if (
x >=
p->view->pos.x && x < p->view->pos.x +
p->view->pos.w) {
935 if (y >=
p->view->pos.y && y < p->view->pos.y +
p->view->pos.h) {
1004 int idx =
RZ_MIN(-sx, strlen(white) - 1);
1007 0, sy,
w + sx - 3,
h - 2 + sy);
1015 sx, sy,
w + sx - 3,
h - 2 + sy);
1048 int sx =
b ? -2 : panel->
view->
sx;
1067 int idx =
RZ_MIN(-sx, strlen(white) - 1);
1070 0, sy + graph_pad,
w + sx - 3,
h - 2 + sy);
1096 if (!strcmp(panel->
model->
title, cmd_title)) {
1103 if (!strcmp(panel->
model->
title, cmd_title)) {
1158 if (strlen(
filter) > 1024) {
1206 panels->
can->
sx = 0;
1207 panels->
can->
sy = 0;
1227 int tmp_w =
RZ_MAX(
w - colpos, 0);
1230 tmp_h =
h - total_h;
1235 total_h += 2 + (
ph * (
i - 1)) - 1 + tmp_h + 1;
1245 if (
p->view->pos.x == 0) {
1283 const char *
help =
"Help";
1330 int owidth =
p->view->pos.w;
1331 p->view->pos.w = owidth / 2 + 1;
1333 p->view->pos.y, owidth -
p->view->pos.w + 1,
p->view->pos.h);
1345 int oheight =
p->view->pos.h;
1346 p->view->curpos = 0;
1347 p->view->pos.h = oheight / 2 + 1;
1349 p->view->pos.w, oheight -
p->view->pos.h + 1);
1370 panel[
i + 1] = panel[
i];
1384 print->
cur =
p->view->curpos;
1386 p->view->curpos = print->
cur;
1396 if (normal || abnormal) {
1398 if (
__show_status_yesno(core, 1,
"You need to turn off cache to use cursor. Turn off now?(Y/n)")) {
1406 (void)
__show_status(core,
"You can always toggle cache by \'&\' key");
1413 (void)
__show_status(core,
"Cursor is not available for the current panel.");
1431 if (*
s ==
'0' && *(
s + 1) ==
'x') {
1451 if (print->
cur > 0) {
1506 if (print->
cur >= 0) {
1515 if (print->
ocur != -1) {
1523 if (!cur_is_visible) {
1526 for (
i = 0;
i < 2;
i++) {
1535 if (print->
ocur != -1) {
1626 strcpy(
buf,
"\"CC ");
1635 if (!strcmp(
buf +
i,
"-")) {
1651 if (
buf[3] ==
' ') {
1652 int j,
len = strlen(
buf);
1654 for (
i = 4, j = 4;
i <
len;
i++, j++) {
1656 if (
c ==
'"' &&
i != (
len - 1)) {
1845 const int MENU_Y = 1;
1880 }
else if (
x ==
w) {
1900 if (!strcmp(word,
menus[
i])) {
1907 (void)(child->
cb(core));
1912 if (!strcmp(word,
"Tab")) {
1917 if (word[0] ==
'[' && word[1] && word[2] ==
']') {
1935 const int TITLE_Y = ppos->
view->
pos.
y + 2;
1936 if (y == TITLE_Y && strcmp(word,
" X ")) {
1941 if (
x > (fX - 13) &&
x < fX) {
1943 }
else if (
x > fx &&
x < (fx + 5)) {
1989 if (
x >= ppos->
view->
pos.
x && x < ppos->view->pos.x + 4) {
2003 for (
i = 0;
i < parent->
n_sub;
i++) {
2004 if (!strcmp(word, parent->
sub[
i]->
name)) {
2064 int act =
__show_status(core,
"Visual Mark s:set -:remove \':use: ");
2121 int i, cx0, cx1, cy0, cy1, tx0, tx1, ty0, ty1, cur1 = 0, cur2 = 0, cur3 = 0, cur4 = 0;
2130 if (!targets1 || !targets2 || !targets3 || !targets4) {
2138 tx0 =
p->view->pos.x;
2139 tx1 =
p->view->pos.x +
p->view->pos.w - 1;
2140 ty0 =
p->view->pos.y;
2141 ty1 =
p->view->pos.y +
p->view->pos.h - 1;
2146 p->view->refresh =
true;
2150 bool y_included = (ty1 >= cy0 && cy1 >= ty1) || (ty0 >= cy0 && cy1 >= ty0);
2151 if (tx1 == cx0 && y_included) {
2153 targets1[cur1++] =
p;
2156 if (tx0 == cx1 && y_included) {
2158 targets3[cur3++] =
p;
2163 targets2[cur2++] =
p;
2167 if (tx1 + PANEL_CONFIG_RESIZE_W < panels->can->w) {
2168 targets4[cur4++] =
p;
2173 for (
i = 0;
i < cur1;
i++) {
2177 for (
i = 0;
i < cur2;
i++) {
2185 }
else if (cur3 > 0) {
2186 for (
i = 0;
i < cur3;
i++) {
2191 for (
i = 0;
i < cur4;
i++) {
2207 int i, tx0, tx1, ty0, ty1, cur1 = 0, cur2 = 0, cur3 = 0, cur4 = 0;
2216 if (!targets1 || !targets2 || !targets3 || !targets4) {
2224 tx0 =
p->view->pos.x;
2225 tx1 =
p->view->pos.x +
p->view->pos.w - 1;
2226 ty0 =
p->view->pos.y;
2227 ty1 =
p->view->pos.y +
p->view->pos.h - 1;
2232 p->view->refresh =
true;
2236 bool y_included = (ty1 >= cy0 && cy1 >= ty1) || (ty0 >= cy0 && cy1 >= ty0);
2237 if (tx1 == cx0 && y_included) {
2239 targets1[cur1++] =
p;
2242 if (tx0 == cx1 && y_included) {
2244 targets3[cur3++] =
p;
2249 targets2[cur2++] =
p;
2253 if (tx1 + PANEL_CONFIG_RESIZE_W < panels->can->w) {
2254 targets4[cur4++] =
p;
2259 for (
i = 0;
i < cur3;
i++) {
2264 for (
i = 0;
i < cur4;
i++) {
2270 }
else if (cur1 > 0) {
2271 for (
i = 0;
i < cur1;
i++) {
2275 for (
i = 0;
i < cur2;
i++) {
2293 int i, tx0, tx1, ty0, ty1, cur1 = 0, cur2 = 0, cur3 = 0, cur4 = 0;
2302 if (!targets1 || !targets2 || !targets3 || !targets4) {
2310 tx0 =
p->view->pos.x;
2311 tx1 =
p->view->pos.x +
p->view->pos.w - 1;
2312 ty0 =
p->view->pos.y;
2313 ty1 =
p->view->pos.y +
p->view->pos.h - 1;
2318 p->view->refresh =
true;
2322 bool x_included = (tx1 >= cx0 && cx1 >= tx1) || (tx0 >= cx0 && cx1 >= tx0);
2323 if (ty1 == cy0 && x_included) {
2325 targets1[cur1++] =
p;
2328 if (ty0 == cy1 && x_included) {
2330 targets3[cur3++] =
p;
2335 targets2[cur2++] =
p;
2340 targets4[cur4++] =
p;
2345 for (
i = 0;
i < cur1;
i++) {
2349 for (
i = 0;
i < cur2;
i++) {
2357 }
else if (cur3 > 0) {
2358 for (
i = 0;
i < cur3;
i++) {
2363 for (
i = 0;
i < cur4;
i++) {
2380 int key =
__show_status(core,
"Move the current panel to direction (h/j/k/l): ");
2404 panels->
panel[0] = panel;
2408 int new_w =
w - p_w;
2413 int t_x = (
int)(((
double)
tmp->view->pos.x / (
double)
w) * (double)new_w + p_w);
2414 int t_w = (
int)(((
double)
tmp->view->pos.w / (double)
w) * (double)new_w + 1);
2430 int new_w =
w - p_w;
2434 int t_x = ((double)
tmp->view->pos.x / (
double)
w) * (
double)new_w;
2435 int t_w = ((double)
tmp->view->pos.w / (
double)
w) * (
double)new_w + 1;
2445 panels->
panel[0] = panel;
2448 int new_h =
h - p_h;
2453 int t_y = ((double)
tmp->view->pos.y / (
double)
h) * (
double)new_h + p_h;
2454 int t_h = ((double)
tmp->view->pos.h / (
double)
h) * (
double)new_h + 1;
2467 int new_h =
h - p_h;
2472 const size_t t_y = (
tmp->view->pos.y * new_h /
h) + 1;
2491 int64_t t =
p->view->pos.x +
p->view->pos.w;
2497 int tx =
p->view->pos.x;
2507 if (numi - 1 == tx) {
2511 int sub = numi - tx;
2518 int t =
p->view->pos.x - target_num + 1;
2519 p->view->pos.x = target_num - 1;
2520 p->view->pos.w += t;
2533 int64_t t =
p->view->pos.y +
p->view->pos.h;
2539 int ty =
p->view->pos.y;
2540 int th =
p->view->pos.h;
2541 if (ty == 1 || th == (
h - 1)) {
2550 if (numi - 1 == ty) {
2554 int sub = numi - ty;
2561 int t =
p->view->pos.y - target_num + 1;
2562 p->view->pos.y = target_num - 1;
2563 p->view->pos.h += t;
2571 int i, tx0, tx1, ty0, ty1, cur1 = 0, cur2 = 0, cur3 = 0, cur4 = 0;
2580 if (!targets1 || !targets2 || !targets3 || !targets4) {
2588 tx0 =
p->view->pos.x;
2589 tx1 =
p->view->pos.x +
p->view->pos.w - 1;
2590 ty0 =
p->view->pos.y;
2591 ty1 =
p->view->pos.y +
p->view->pos.h - 1;
2596 p->view->refresh =
true;
2600 bool x_included = (tx1 >= cx0 && cx1 >= tx1) || (tx0 >= cx0 && cx1 >= tx0);
2601 if (ty1 == cy0 && x_included) {
2603 targets1[cur1++] =
p;
2606 if (ty0 == cy1 && x_included) {
2608 targets3[cur3++] =
p;
2613 targets2[cur2++] =
p;
2617 if (ty1 + PANEL_CONFIG_RESIZE_H < panels->can->h) {
2618 targets4[cur4++] =
p;
2623 for (
i = 0;
i < cur3;
i++) {
2628 for (
i = 0;
i < cur4;
i++) {
2634 }
else if (cur1 > 0) {
2635 for (
i = 0;
i < cur1;
i++) {
2639 for (
i = 0;
i < cur2;
i++) {
2700 bool leftUpValid =
false, leftDownValid =
false, rightUpValid =
false, rightDownValid =
false,
2701 upLeftValid =
false, upRightValid =
false, downLeftValid =
false, downRightValid =
false;
2703 memset(left, -1,
sizeof(left));
2704 memset(right, -1,
sizeof(right));
2705 memset(up, -1,
sizeof(up));
2706 memset(down, -1,
sizeof(down));
2707 int i, ox, oy, ow, oh;
2708 ox =
p->view->pos.x;
2709 oy =
p->view->pos.y;
2710 ow =
p->view->pos.w;
2711 oh =
p->view->pos.h;
2719 justLeftPanel = tmpPanel;
2724 leftDownValid =
true;
2727 if (tmpPanel->
view->
pos.
x == ox + ow - 1) {
2730 rightUpValid =
true;
2732 rightDownValid =
true;
2733 justRightPanel = tmpPanel;
2737 rightDownValid =
true;
2745 upRightValid =
true;
2746 justUpPanel = tmpPanel;
2750 upRightValid =
true;
2753 if (tmpPanel->
view->
pos.
y == oy + oh - 1) {
2756 downLeftValid =
true;
2758 downRightValid =
true;
2759 justDownPanel = tmpPanel;
2763 downRightValid =
true;
2767 if (justLeftPanel) {
2769 }
else if (justRightPanel) {
2770 justRightPanel->view->pos.w = justRightPanel->view->pos.x + justRightPanel->view->pos.w - ox;
2771 justRightPanel->view->pos.x = ox;
2772 }
else if (justUpPanel) {
2773 justUpPanel->view->pos.h += oy + oh - (justUpPanel->view->pos.y + justUpPanel->view->pos.h);
2774 }
else if (justDownPanel) {
2775 justDownPanel->view->pos.h = oh + justDownPanel->view->pos.y + justDownPanel->view->pos.h - (oy + oh);
2776 justDownPanel->view->pos.y = oy;
2777 }
else if (leftUpValid && leftDownValid) {
2779 if (left[
i] != -1) {
2784 }
else if (rightUpValid && rightDownValid) {
2786 if (right[
i] != -1) {
2792 }
else if (upLeftValid && upRightValid) {
2799 }
else if (downLeftValid && downRightValid) {
2801 if (down[
i] != -1) {
2859 if (rz_list_empty(fun->
bbs)) {
2860 rz_cons_message(
"No basic blocks in this function. You may want to use 'afb+'.");
2872 p->model->funcName =
NULL;
2875 if (!
p->model->funcName || strcmp(
p->model->funcName, func->
name)) {
2914 p->view->refresh =
true;
2936 eprintf(
"Cannot create RzCons.canvas context\n");
2948 const char *
msg =
"panel limit exceeded.";
2989 m->baseAddr = stackbase;
3000 p->model->cache =
true;
3004 if ((
p->model->cache &&
p->model->cmdStrCache) ||
p->model->readOnly) {
3008 if (!
p->model->cmd) {
3044 if (!
p->model->cmd) {
3154 rz_list_foreach (dir, it,
entry) {
3211 for (
i = 1;
i < menu->
depth;
i++) {
3213 p->view->refresh =
true;
3232 for (
i = 1;
i < menu->
depth;
i++) {
3234 p->view->refresh =
true;
3237 if (!strcmp(parent->
name,
"asm")) {
3240 if (!strcmp(parent->
name,
"Screen")) {
3259 for (
i = 1;
i < menu->
depth;
i++) {
3261 p->view->refresh =
true;
3264 if (!strcmp(parent->
name,
"asm")) {
3267 if (!strcmp(parent->
name,
"Screen")) {
3290 core->
vmode =
false;
3408 bool create_new =
true;
3423 int x1 =
x0 +
w0 / 2 - 1;
3424 int w1 = threshold_w -
x1;
3465 const char *title, *
cmd;
3469 title =
"Panels Window mode help";
3470 cmd =
"Window Mode Help";
3474 title =
"Panels Zoom mode help";
3475 cmd =
"Zoom Mode Help";
3479 title =
"Visual Ascii Art Panels";
3493 p->view->refresh =
true;
3519 char *dh_orig = core->
dbg->
cur
3536 const char *
prompt =
"addr: ";
3553 char addrBuf[128], perm[128];
3554 const char *addrPrompt =
"addr: ", *rwPrompt =
"<r/w/rw>: ";
3648 }
else if (cur->
view->
sx > 0) {
3722 cols = cols > 0 ? cols : 3;
3728 }
else if (cur->
view->
sx > 0) {
3771 }
else if (cur->
view->
sx > 0) {
3842 }
else if (cur->
view->
sy > 0) {
3991 const char sign = (
delta < 0) ?
'+' :
'-';
3996 for (
i = 0;
i <
n;
i++) {
4023 for (
i = 0;
i <
n;
i++) {
4070 if (menu->
depth < 2) {
4100 void *
addr = ht_pp_find(panels->
mht, parent,
NULL);
4127 p_item->
sub[p_item->
n_sub - 1] = item;
4135 void *
addr = ht_pp_find(panels->
mht, parent,
NULL);
4138 for (
i = 0;
i < p_item->
n_sub;
i++) {
4156 for (
i = 1;
i < menu->
depth;
i++) {
4169 for (
i = 0;
i < item->
n_sub;
i++) {
4187 free(
p->model->title);
4190 p->view->pos.w = new_w;
4191 p->view->pos.h += 4;
4193 p->view->refresh =
true;
4207 rz_list_foreach (dir, it,
entry) {
4208 if (strcmp(
entry,
".") && strcmp(
entry,
"..")) {
4221 parent =
"Settings.Colors";
4227 if (
pos && !strcmp(now,
pos)) {
4247 if (!strcmp(
pos,
"asm")) {
4272 if (!strcmp(
pos,
"asm.var.summary") ||
4273 !strcmp(
pos,
"asm.arch") ||
4274 !strcmp(
pos,
"asm.bits") ||
4275 !strcmp(
pos,
"asm.cpu")) {
4328 char *parent =
"File";
4337 }
else if (!strcmp(
menus_File[
i],
"Save Layout")) {
4339 }
else if (!strcmp(
menus_File[
i],
"Load Layout")) {
4341 }
else if (!strcmp(
menus_File[
i],
"Clear Saved Layouts")) {
4351 parent =
"Settings";
4364 }
else if (!strcmp(
menus_Edit[
i],
"Write String")) {
4368 }
else if (!strcmp(
menus_Edit[
i],
"Write Value")) {
4410 }
else if (!strcmp(
menus_Search[
i],
"String (Data Sections)")) {
4441 if (!strcmp(
pos,
"Breakpoints")) {
4443 }
else if (!strcmp(
pos,
"Watchpoints")) {
4445 }
else if (!strcmp(
pos,
"Continue")) {
4447 }
else if (!strcmp(
pos,
"Step")) {
4449 }
else if (!strcmp(
pos,
"Step Over")) {
4451 }
else if (!strcmp(
pos,
"Reload")) {
4490 parent =
"File.ReOpen";
4501 parent =
"File.Load Layout";
4518 parent =
"Edit.io.cache";
4536 char *
a = (
char *)_a, *
b = (
char *)_b;
4537 return strcmp(
a,
b);
4575 if (!panels->
panel) {
4624 for (
i = 0;
i < item->
n_sub;
i++) {
4685 for (
i = 0;
i < parent->
n_sub;
i++) {
4798 if (!core || !core->
panels) {
4830 sdb_set(db,
"Symbols",
"isq", 0);
4831 sdb_set(db,
"Stack",
"px 256@r:SP", 0);
4832 sdb_set(db,
"Locals",
"afvd", 0);
4834 sdb_set(db,
"RegisterRefs",
"drr", 0);
4835 sdb_set(db,
"Disassembly",
"pd", 0);
4836 sdb_set(db,
"Disassemble Summary",
"pdsf", 0);
4837 sdb_set(db,
"Graph",
"agf", 0);
4838 sdb_set(db,
"Tiny Graph",
"agft", 0);
4840 sdb_set(db,
"Database",
"k ***", 0);
4841 sdb_set(db,
"Console",
"$console", 0);
4842 sdb_set(db,
"Hexdump",
"xc $r*16", 0);
4843 sdb_set(db,
"Xrefs",
"axl", 0);
4844 sdb_set(db,
"Functions",
"afl", 0);
4845 sdb_set(db,
"Function Calls",
"aflm", 0);
4846 sdb_set(db,
"Comments",
"CC", 0);
4847 sdb_set(db,
"Entropy",
"p=e 100", 0);
4848 sdb_set(db,
"Entropy Fire",
"p==e 100", 0);
4850 sdb_set(db,
"Sections",
"iSq", 0);
4851 sdb_set(db,
"Segments",
"iSSq", 0);
4855 sdb_set(db,
"Modules",
"dmm", 0);
4856 sdb_set(db,
"Backtrace",
"dbt", 0);
4857 sdb_set(db,
"Breakpoints",
"db", 0);
4858 sdb_set(db,
"Imports",
"iiq", 0);
4859 sdb_set(db,
"Clipboard",
"yx", 0);
4861 sdb_set(db,
"Var READ address",
"afvR", 0);
4862 sdb_set(db,
"Var WRITE address",
"afvW", 0);
4863 sdb_set(db,
"Summary",
"pdsf", 0);
4864 sdb_set(db,
"Classes",
"icq", 0);
4865 sdb_set(db,
"Methods",
"ic", 0);
4866 sdb_set(db,
"Relocs",
"ir", 0);
4867 sdb_set(db,
"Headers",
"iH", 0);
4868 sdb_set(db,
"File Hashes",
"it", 0);
5019 if (
line->file_hist_index >= num_files ||
line->file_hist_index < 0) {
5022 line->file_hist_index++;
5026 line->buffer.index =
line->buffer.length = strlen(
line->buffer.data);
5036 if (
line->file_hist_index <= 0 ||
line->file_hist_index > num_files) {
5039 line->file_hist_index--;
5040 if (
line->file_hist_index <= 0) {
5041 line->buffer.data[0] =
'\0';
5042 line->buffer.index =
line->buffer.length = 0;
5048 line->buffer.index =
line->buffer.length = strlen(
line->buffer.data);
5062 if (menu->
depth <= 2) {
5069 if (menu->
depth == 2) {
5078 if (menu->
depth == 1) {
5079 (void)(child->
cb(core));
5086 if (menu->
depth < 2) {
5093 }
else if (menu->
depth == 2) {
5098 if (menu->
depth == 1) {
5131 (void)(child->
cb(core));
5164 char cmd[128] = { 0 };
5168 if (!strcmp(
cmd,
"clear")) {
5246 if (!dir_path || !dir) {
5253 rz_list_foreach (dir, it,
entry) {
5275 const char *
name = oname;
5302 fprintf(
fd,
"%s\n", pjs);
5316 rz_list_foreach (themes_list, th_iter, th) {
5327 char *
tmp =
rz_str_newf(
"No saved layout found for the name: %s", _name);
5334 if (!panels_config) {
5347 free(panels_config);
5352 int x = 0, y = 0,
w = 0,
h = 0;
5354 for (child = json->
children.first; child; child = child->
next) {
5358 size_t params_read = 0;
5359 for (baby = child->
children.first; baby; baby = baby->
next) {
5360 if (params_read == 6) {
5367 if (strcmp(baby->
key,
"title") == 0) {
5370 }
else if (strcmp(baby->
key,
"cmd") == 0) {
5374 }
else if (strcmp(baby->
key,
"x") == 0) {
5375 x = baby->
num.u_value;
5377 }
else if (strcmp(baby->
key,
"y") == 0) {
5378 y = baby->
num.u_value;
5380 }
else if (strcmp(baby->
key,
"w") == 0) {
5381 w = baby->
num.u_value;
5383 }
else if (strcmp(baby->
key,
"h") == 0) {
5384 h = baby->
num.u_value;
5388 if (!title || !
cmd) {
5389 eprintf(
"Malformed Visual Panels config: %s\n", _name);
5391 free(panels_config);
5404 free(panels_config);
5413 free(panels_config);
5454 p->model->cache = !
p->model->cache;
5456 p->view->refresh =
true;
5491 if (
__show_status_yesno(core, 1,
"Insert is not available because io.cache is off. Turn on now?(Y/n)")) {
5493 (void)
__show_status(core,
"io.cache is on and insert is available now.");
5495 (void)
__show_status(core,
"You can always turn on io.cache in Menu->Edit->io.cache");
5503 const char *
prompt =
"insert hex: ";
5508 const char *
prompt =
"insert hex: ";
5513 const char *
prompt =
"insert hex: ";
5548 int temp_x0, temp_x1, temp_y0, temp_y1;
5552 temp_x0 =
p->view->pos.x;
5553 temp_x1 =
p->view->pos.x +
p->view->pos.w - 1;
5554 temp_y0 =
p->view->pos.y;
5555 temp_y1 =
p->view->pos.y +
p->view->pos.h - 1;
5556 switch (direction) {
5558 if (temp_x1 == cur_x0) {
5559 if (temp_y1 <= cur_y0 || cur_y1 <= temp_y0) {
5567 if (temp_x0 == cur_x1) {
5568 if (temp_y1 <= cur_y0 || cur_y1 <= temp_y0) {
5576 if (temp_y1 == cur_y0) {
5577 if (temp_x1 <= cur_x0 || cur_x1 <= temp_x0) {
5585 if (temp_y0 == cur_y1) {
5586 if (temp_x1 <= cur_x0 || cur_x1 <= temp_x0) {
5615 }
else if (modal->
idx < 0) {
5618 }
else if (modal->
idx < modal->
offset) {
5644 if (start < modal->
offset) {
5647 if (
start >= range_end) {
5668 int okey,
key, cx, cy;
5677 if ((cx <
x ||
x +
w < cx) ||
5678 ((cy < y || y +
h < cy))) {
5742 if (
i++ == modal->
idx) {
5756 if (
i++ == modal->
idx) {
5772 while (panels_list[
i]) {
5777 const char *
s = panels_list[
i++];
5791 tmp_model = first->
model;
5797 last->
model = tmp_model;
5799 tmp_model = last->
model;
5805 first->
model = tmp_model;
5815 if (!
p->model->rotate) {
5816 p->model->rotate = 4;
5834 if (!
p->model->rotate) {
5835 p->model->rotate = cmdslen - 1;
5842 char tmp[64], *between;
5843 int i =
p->model->rotate % cmdslen;
5854 p->view->refresh =
true;
5942 p->view->refresh =
true;
6035 for (
i = panels_root->
cur_panels; i < panels_root->n_panels - 1;
i++) {
6151 root->panels[
root->n_panels] = new_panels;
6154 core->
panels = new_panels;
6194 char *
pos = strstr(
R,
r);
6198 #define TOkENs ":=*+-/()[,] "
6223 char *
pos = strstr(
R,
r);
6225 const char *padding =
" ";
6230 while (
pos >
R && strncmp(padding,
pos, strlen(padding))) {
6253 p->cur += aop->
size;
6287 int originCursor = core->
print->
cur;
6292 bool originVmode = core->
vmode;
6487 for (
i = 0;
i < 4;
i++) {
6502 for (
i = 0;
i < 4;
i++) {
6581 set_refresh_all (panels,
false);
6663 rz_core_cmd0(core,
"?i highlight;e scr.highlight=`yp`");
6850 core->
vmode = originVmode;
RZ_API int rz_core_visual_graph(RzCore *core, RzAGraph *g, RzAnalysisFunction *_fcn, int is_interactive)
static RzILOpEffect * rev(cs_insn *insn, bool is_thumb)
static RZ_NULLABLE RzILOpBitVector * shift(RzILOpBitVector *val, RZ_NULLABLE RzILOpBool **carry_out, arm_shifter type, RZ_OWN RzILOpBitVector *dist)
RZ_API int rz_asm_disassemble(RzAsm *a, RzAsmOp *op, const ut8 *buf, int len)
RZ_API ut64 rz_bin_file_delete_all(RzBin *bin)
int bits(struct state *s, int need)
const lzma_allocator const uint8_t size_t uint8_t * out
RZ_API bool rz_bp_del(RzBreakpoint *bp, ut64 addr)
RZ_API int rz_core_analysis_all(RzCore *core)
RZ_API bool rz_core_analysis_function_add(RzCore *core, const char *name, ut64 addr, bool analyze_recursively)
RZ_API RzAnalysisOp * rz_core_analysis_op(RzCore *core, ut64 addr, int mask)
RZ_API bool rz_core_analysis_everything(RzCore *core, bool experimental, char *dh_orig)
RZ_API bool rz_core_analysis_refs(RZ_NONNULL RzCore *core, size_t nbytes)
Analyze xrefs and prints the result.
RZ_API void rz_cons_canvas_print(RzConsCanvas *c)
RZ_API RZ_OWN char * rz_cons_canvas_to_string(RzConsCanvas *c)
RZ_API void rz_cons_canvas_write(RzConsCanvas *c, const char *s)
RZ_API bool rz_cons_canvas_gotoxy(RzConsCanvas *c, int x, int y)
RZ_API void rz_cons_canvas_fill(RzConsCanvas *c, int x, int y, int w, int h, char ch)
RZ_API int rz_cons_canvas_resize(RzConsCanvas *c, int w, int h)
RZ_API RzConsCanvas * rz_cons_canvas_new(int w, int h)
RZ_API void rz_cons_canvas_box(RzConsCanvas *c, int x, int y, int w, int h, const char *color)
RZ_API void rz_cons_canvas_free(RzConsCanvas *c)
RZ_API void rz_core_debug_breakpoint_toggle(RZ_NONNULL RzCore *core, ut64 addr)
Toggle breakpoint.
RZ_IPI void rz_core_debug_continue(RzCore *core)
RZ_IPI void rz_core_debug_single_step_in(RzCore *core)
RZ_IPI void rz_core_debug_single_step_over(RzCore *core)
RZ_API void rz_core_file_reopen_debug(RzCore *core, const char *args)
RZ_API void rz_core_io_file_open(RZ_NONNULL RzCore *core, int fd)
Open file use read-only Permission.
RZ_API void rz_core_io_file_reopen(RZ_NONNULL RzCore *core, int fd, int perms)
Reopen file.
RZ_API bool rz_core_file_close_fd(RzCore *core, int fd)
RZ_API void rz_core_analysis_esil_init_mem(RZ_NONNULL RzCore *core, RZ_NULLABLE const char *name, ut64 addr, ut32 size)
RZ_API void rz_core_analysis_esil_init_regs(RZ_NONNULL RzCore *core)
RZ_API int rz_core_write_hexpair(RzCore *core, ut64 addr, const char *pairs)
RZ_API int rz_core_block_read(RzCore *core)
RZ_API int rz_core_cmd0(RzCore *core, const char *cmd)
RZ_API int rz_core_cmd(RzCore *core, const char *cstr, int log)
RZ_API int rz_core_cmdf(RzCore *core, const char *fmt,...)
RZ_API char * rz_core_cmd_str(RzCore *core, const char *cmd)
Executes a rizin command and returns the stdout as a string.
RZ_API void rz_core_analysis_calls(RZ_NONNULL RzCore *core, bool imports_only)
RZ_API int rz_core_esil_step(RzCore *core, ut64 until_addr, const char *until_expr, ut64 *prev_addr, bool stepOver)
RZ_IPI void rz_core_debug_bp_add(RzCore *core, ut64 addr, const char *arg_perm, bool hwbp, bool watch)
RZ_API void rz_core_theme_nextpal(RzCore *core, RzConsPalSeekMode mode)
RZ_API RZ_OWN RzList * rz_core_theme_list(RZ_NONNULL RzCore *core)
Returns the list of the rizin themes.
RZ_API bool rz_core_theme_load(RzCore *core, const char *name)
RZ_API void rz_core_gadget_print(RzCore *core)
Prints or displays the print gadgets while in visual mode.
static char * config_path(RzCore *core)
RZ_API ut64 rz_config_get_i(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API bool rz_config_get_b(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API RzConfigNode * rz_config_set(RzConfig *cfg, RZ_NONNULL const char *name, const char *value)
RZ_API RzConfigNode * rz_config_set_i(RzConfig *cfg, RZ_NONNULL const char *name, const ut64 i)
RZ_API RZ_BORROW const char * rz_config_get(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API RzConfigNode * rz_config_set_b(RzConfig *cfg, RZ_NONNULL const char *name, bool value)
RZ_API bool rz_config_toggle(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API void rz_cons_set_raw(bool is_raw)
RZ_API int rz_cons_get_size(int *rows)
RZ_API bool rz_cons_enable_mouse(const bool enable)
RZ_API void rz_cons_set_interactive(bool x)
RZ_API int rz_cons_printf(const char *format,...)
RZ_API void rz_cons_echo(const char *msg)
RZ_API bool rz_cons_is_interactive(void)
RZ_API bool rz_cons_get_click(int *x, int *y)
RZ_API void rz_cons_flush(void)
RZ_API void rz_cons_gotoxy(int x, int y)
RZ_API void rz_core_reg_update_flags(RzCore *core)
Update or create flags for all registers where it makes sense.
RZ_API bool rz_core_reg_set_by_role_or_name(RzCore *core, const char *name, ut64 num)
set on rz_core_reg_default()
static bool update(RzCrypto *cry, const ut8 *buf, int len)
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void start
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags cmd
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len key
RZ_API int rz_line_hist_cmd_down(RzLine *line)
RZ_API int rz_line_hist_cmd_up(RzLine *line)
RZ_API int rz_line_set_hist_callback(RzLine *line, RzLineHistoryUpCb up, RzLineHistoryDownCb down)
RZ_API ut64 rz_debug_reg_get(RzDebug *dbg, const char *name)
RZ_DEPRECATE RZ_API RzAnalysisFunction * rz_analysis_get_fcn_in(RzAnalysis *analysis, ut64 addr, int type)
checking print the parsed form of the magic use in n conjunction with m to debug a new magic file n before installing it n output MIME type strings(--mime-type and\n"
" --mime-encoding)\n") OPT('s'
checking print the parsed form of the magic use in n conjunction with m to debug a new magic file n before installing it n output MIME type special files
RZ_API RzFlagItem * rz_flag_set(RzFlag *f, const char *name, ut64 off, ut32 size)
RZ_API char * sdb_fmt(const char *fmt,...)
RZ_API RZ_OWN char * rz_core_fortune_get_random(RzCore *core)
unsigned short prefix[65536]
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API const KEY_TYPE bool * found
RZ_API void rz_cons_message(RZ_NONNULL const char *msg)
return memset(p, 0, total)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static void list(RzEgg *egg)
RZ_API RZ_OWN RzList * rz_list_new(void)
Returns a new initialized RzList pointer (free method is not initialized)
RZ_API void rz_list_sort(RZ_NONNULL RzList *list, RZ_NONNULL RzListComparator cmp)
Sorts via merge sort or via insertion sort a list.
RZ_API RZ_BORROW void * rz_list_get_n(RZ_NONNULL const RzList *list, ut32 n)
Returns the N-th element of the list.
RZ_API ut32 rz_list_length(RZ_NONNULL const RzList *list)
Returns the length of the list.
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
RZ_API void rz_list_free(RZ_NONNULL RzList *list)
Empties the list and frees the list pointer.
RZ_API void rz_list_purge(RZ_NONNULL RzList *list)
Empties the list without freeing the list pointer.
void * realloc(void *ptr, size_t size)
void * malloc(size_t size)
void * calloc(size_t number, size_t size)
RZ_API void rz_line_set_prompt(const char *prompt)
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask struct ustat static ubuf static getppid static setsid static egid sigset_t static set struct timeval struct timezone static tz fd_set fd_set fd_set struct timeval static timeout const char char static bufsiz const char static swapflags void static offset const char static length static mode static who const char struct statfs static buf unsigned unsigned num
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
RZ_API void ls_free(SdbList *list)
#define ls_foreach(list, it, pos)
RZ_API void * sdb_ptr_get(Sdb *db, const char *key, ut32 *cas)
RZ_API int sdb_ptr_set(Sdb *db, const char *key, void *p, ut32 cas)
RZ_API void rz_analysis_op_free(void *op)
RZ_API void rz_cons_pal_random(void)
static int __function_cb(void *user)
static const char * menus_Emulate[]
static void __create_panel(RzCore *core, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title, const char *cmd)
static int __calls_cb(void *user)
static void __panels_layout(RzPanels *panels)
static void __toggle_help(RzCore *core)
static void __rotate_entropy_h_cb(void *user, bool rev)
static void __split_panel_vertical(RzCore *core, RzPanel *p, const char *name, const char *cmd)
static void __dismantle_del_panel(RzCore *core, RzPanel *p, int pi)
#define PANEL_CMD_TINYGRAPH
static void __free_modal(RModal **modal)
static int __reload_cb(void *user)
static void __reset_filter(RzCore *core, RzPanel *panel)
static void __do_panels_refresh(RzCore *core)
static bool __check_panel_num(RzCore *core)
static void __hudstuff(RzCore *core)
static int __continue_cb(void *user)
static void __toggle_cache(RzCore *core, RzPanel *p)
static void __move_panel_to_left(RzCore *core, RzPanel *panel, int src)
static void __init_panel_param(RzCore *core, RzPanel *p, const char *title, const char *cmd)
static int __get_panel_idx_in_pos(RzCore *core, int x, int y)
static void __fix_layout_h(RzCore *core)
static void __init_almighty_db(RzCore *core)
static void __rotate_asmemu(RzCore *core, RzPanel *p)
static void __toggle_window_mode(RzCore *core)
static void __load_config_menu(RzCore *core)
static bool __handle_console(RzCore *core, RzPanel *panel, const int key)
static void __handle_tab_key(RzCore *core, bool shift)
static int __watch_points_cb(void *user)
static const char * menus_loadLayout[]
static void __set_addr_by_type(RzCore *core, const char *cmd, ut64 addr)
static const char * menus_Analyze[]
static int __symbols_cb(void *user)
#define PANEL_CMD_FUNCTION
static int __version_cb(void *user)
static void __set_refresh_all(RzCore *core, bool clearCache, bool force_refresh)
#define PANEL_TITLE_STRINGS_DATA
#define PANEL_CONFIG_RESIZE_W
static void __set_size(RzPanelPos *pos, int w, int h)
static const char * menus_ReOpen[]
RZ_API bool rz_core_visual_panels_root(RzCore *core, RzPanelsRoot *panels_root)
static void __print_hexdump_cb(void *user, void *p)
static bool __init_panels_menu(RzCore *core)
static void __rotate_register_cb(void *user, bool rev)
static void __set_read_only(RzCore *core, RzPanel *p, char *s)
static void __handle_visual_mark(RzCore *core)
static int __config_value_cb(void *user)
static void __resize_panel_up(RzPanels *panels)
static void __init_menu_color_settings_layout(void *core, const char *parent)
static int __save_layout_cb(void *user)
static void __resize_panel_left(RzPanels *panels)
RZ_API void rz_save_panels_layout(RzCore *core, const char *_name)
static void __continue_almighty_cb(void *user, RZ_UNUSED RzPanel *panel, RZ_UNUSED const RzPanelLayout dir, RZ_UNUSED RZ_NULLABLE const char *title)
static const char * menus_settings_screen[]
static char * __handle_cmd_str_cache(RzCore *core, RzPanel *panel, bool force_cache)
static bool __check_if_mouse_y_on_edge(RzCore *core, int x, int y)
static void __set_pcb(RzPanel *p)
static void __update_edge_y(RzCore *core, int y)
static void __fix_layout(RzCore *core)
static void __cursor_right(RzCore *core)
static int __assemble_cb(void *user)
static char * get_word_from_canvas_for_menu(RzCore *core, RzPanels *panels, int x, int y)
static void __activate_cursor(RzCore *core)
static char * __apply_filter_cmd(RzCore *core, RzPanel *panel)
static void __panel_prompt(const char *prompt, char *buf, int len)
static void __del_menu(RzCore *core)
static void __do_panels_resize(RzCore *core)
static void __handle_mouse_on_menu(RzCore *core, int x, int y)
static char * menus_Debug[]
static int __load_layout_saved_cb(void *user)
static bool __handle_mouse_on_panel(RzCore *core, RzPanel *panel, int x, int y, int *key)
static void __resize_panel_right(RzPanels *panels)
static int __fortune_cb(void *user)
#define PANEL_TITLE_SEGMENTS
static char * get_word_from_canvas(RzCore *core, RzPanels *panels, int x, int y)
static void __handle_refs(RzCore *core, RzPanel *panel, ut64 tmp)
static void __adjust_side_panels(RzCore *core)
static void __direction_hexdump_cb(void *user, int direction)
static const char * menus_Settings[]
static void __toggle_zoom_mode(RzCore *core)
static char * hexdump_rotate[]
static int __open_menu_cb(void *user)
static bool __is_abnormal_cursor_type(RzCore *core, RzPanel *panel)
static bool __check_panel_type(RzPanel *panel, const char *type)
static void __handle_tab(RzCore *core)
static void __set_dcb(RzCore *core, RzPanel *p)
static bool __check_if_mouse_y_illegal(RzCore *core, int y)
static int __rz_shell_cb(void *user)
static bool __move_to_direction(RzCore *core, Direction direction)
static int __fill_cb(void *user)
static bool __check_if_cur_panel(RzCore *core, RzPanel *panel)
static bool __draw_modal(RzCore *core, RModal *modal, int range_end, int start, const char *name)
static void __add_help_panel(RzCore *core)
static void __move_panel_to_right(RzCore *core, RzPanel *panel, int src)
static int __references_cb(void *user)
static const char * cache_white_list_cmds[]
static void __init_all_dbs(RzCore *core)
static const char * register_rotate[]
static void __panels_layout_refresh(RzCore *core)
static int __io_cache_off_cb(void *user)
static void __update_help_contents(RzCore *core, RzPanel *panel)
static void __update_edge_x(RzCore *core, int x)
static char * __create_panels_config_path(const char *file)
static void __exec_almighty(RzCore *core, RzPanel *panel, RModal *modal, Sdb *menu_db, RzPanelLayout dir)
static void __do_panels_refreshOneShot(RzCore *core)
static void __fix_cursor_up(RzCore *core)
static bool __check_root_state(RzCore *core, RzPanelsRootState state)
static void __clear_panels_menuRec(RzPanelsMenuItem *pmi)
#define PANEL_TITLE_SECTIONS
static int __break_points_cb(void *user)
static void __rotate_function_cb(void *user, bool rev)
static void __handle_tab_new(RzCore *core)
static void __add_visual_mark(RzCore *core)
static void __update_help(RzCore *core, RzPanels *ps)
static char * __search_db(RzCore *core, const char *title)
static void __add_menu(RzCore *core, const char *parent, const char *base_name, RzPanelsMenuCallback cb)
static void __panel_single_step_in(RzCore *core)
static void __fix_layout_w(RzCore *core)
static void nextOpcode(RzCore *core)
static RZ_OWN char * __search_strings(RzCore *core, bool whole)
static void __undo_seek(RzCore *core)
static int __copy_cb(void *user)
static void __print_disassembly_cb(void *user, void *p)
static void __direction_panels_cursor_cb(void *user, int direction)
static void __direction_disassembly_cb(void *user, int direction)
static void __replace_cmd(RzCore *core, const char *title, const char *cmd)
static void __rotate_disasm_cb(void *user, bool rev)
static void __panel_print(RzCore *core, RzConsCanvas *can, RzPanel *panel, int color)
static char * __show_status_input(RzCore *core, const char *msg)
static char * __get_panels_config_dir_path(void)
static bool __show_status_yesno(RzCore *core, int def, const char *msg)
static void __set_mode(RzCore *core, RzPanelsMode mode)
int __writeValueCb(void *user)
static void __resize_panel_down(RzPanels *panels)
static RModal * __init_modal(void)
static void __renew_filter(RzPanel *panel, int n)
static void __cursor_down(RzCore *core)
static RzList * __sorted_list(RzCore *core, char *menu[], int count)
static void __update_panel_title(RzCore *core, RzPanel *panel)
static void __rotate_panels(RzCore *core, bool rev)
#define PANEL_CMD_SYMBOLS
#define PANEL_CMD_DISASSEMBLY
static bool __handle_mouse_on_X(RzCore *core, int x, int y)
static ut64 __parse_string_on_cursor(RzCore *core, RzPanel *panel, int idx)
static void __handle_tab_name(RzCore *core)
static const char * menus_Tools[]
RZ_API bool rz_load_panels_layout(RzCore *core, const char *_name)
static void __print_graph_cb(void *user, void *p)
static int __help_cb(void *user)
static bool __check_if_mouse_x_on_edge(RzCore *core, int x, int y)
static const char * menus[]
#define PANEL_TITLE_STRINGS_BIN
static bool search_db_check_panel_type(RzCore *core, RzPanel *panel, const char *ch)
void __handlePrompt(RzCore *core, RzPanels *panels)
static void __init_menu_saved_layout(void *core, const char *parent)
static void __refresh_core_offset(RzCore *core)
static const char * entropy_rotate[]
static void __cursor_up(RzCore *core)
static RzPanels * __panels_new(RzCore *core)
static const char * menus_Help[]
static void __handle_tab_nth(RzCore *core, int ch)
static const char * help_msg_panels_zoom[]
static void __save_panel_pos(RzPanel *panel)
static void __cursor_del_breakpoints(RzCore *core, RzPanel *panel)
static bool __handle_mouse_on_top(RzCore *core, int x, int y)
static void __delete_almighty(RzCore *core, RModal *modal, Sdb *menu_db)
static void __set_rcb(RzPanels *ps, RzPanel *p)
static const char * menus_Search[]
static bool __handle_window_mode(RzCore *core, const int key)
static void __set_panel_addr(RzCore *core, RzPanel *panel, ut64 addr)
static int __open_file_cb(void *user)
static int __file_history_down(RzLine *line)
static void __update_disassembly_or_open(RzCore *core)
#define PANEL_CMD_DISASMSUMMARY
static void __rotate_hexdump_cb(void *user, bool rev)
static bool __handle_mouse(RzCore *core, RzPanel *panel, int *key)
static char * __find_cmd_str_cache(RzCore *core, RzPanel *panel)
static RzStrBuf * __draw_menu(RzCore *core, RzPanelsMenuItem *item)
static void __move_panel_to_dir(RzCore *core, RzPanel *panel, int src)
static void __insert_panel(RzCore *core, int n, const char *name, const char *cmd)
static int __close_file_cb(void *user)
static void __set_refresh_by_type(RzCore *core, const char *cmd, bool clearCache)
static void __menu_panel_print(RzConsCanvas *can, RzPanel *panel, int x, int y, int w, int h)
static void __replace_current_panel_input(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
static void __set_pos(RzPanelPos *pos, int x, int y)
static void __put_breakpoints_cb(void *user, RZ_UNUSED RzPanel *panel, RZ_UNUSED const RzPanelLayout dir, RZ_UNUSED RZ_NULLABLE const char *title)
static void __print_disasmsummary_cb(void *user, void *p)
static int __file_history_up(RzLine *line)
static void __handle_print_rotate(RzCore *core)
void __handleComment(RzCore *core)
static bool __is_normal_cursor_type(RzPanel *panel)
static void __create_panel_input(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
static void __check_edge(RzCore *core)
static void __handle_tab_prev(RzCore *core)
static void __cursor_left(RzCore *core)
static int __settings_colors_cb(void *user)
static void __handle_tab_next(RzCore *core)
static int __code_cb(void *user)
static void __move_panel_to_up(RzCore *core, RzPanel *panel, int src)
char * __get_panels_config_file_from_dir(const char *file)
static void __panels_process(RzCore *core, RzPanels *panels)
#define PANEL_CMD_HEXDUMP
static void __shrink_panels_forward(RzCore *core, int target)
void __mht_free_kv(HtPPKv *kv)
static void __direction_graph_cb(void *user, int direction)
static int __rw_cb(void *user)
static int __string_whole_bin_cb(void *user)
static void __update_help_title(RzCore *core, RzPanel *panel)
#define PANEL_CONFIG_RESIZE_H
static int __system_shell_cb(void *user)
static void __set_root_state(RzCore *core, RzPanelsRootState state)
static void __rotate_entropy_v_cb(void *user, bool rev)
static void __panels_refresh(RzCore *core)
static void __del_panels(RzCore *core)
static char * menus_settings_disassembly[]
static void __set_geometry(RzPanelPos *pos, int x, int y, int w, int h)
static void __shrink_panels_backward(RzCore *core, int target)
static const char * panels_dynamic[]
static void __set_filter(RzCore *core, RzPanel *panel)
static bool __init(RzCore *core, RzPanels *panels, int w, int h)
static void __panels_check_stackbase(RzCore *core)
static int __add_cmdf_panel(RzCore *core, char *input, char *str)
static int __load_layout_default_cb(void *user)
static int __quit_cb(void *user)
static RzConsCanvas * __create_new_canvas(RzCore *core, int w, int h)
static void __print_default_cb(void *user, void *p)
static int __write_str_cb(void *user)
static int __license_cb(void *user)
#define PANEL_CMD_CONSOLE
static const char * function_rotate[]
#define PANEL_CONFIG_SIDEPANEL_W
static int __rop_cb(void *user)
static char * menus_settings_disassembly_asm[]
static int __hexpairs_cb(void *user)
static int __step_cb(void *user)
static void __init_sdb(RzCore *core)
static const char * help_msg_panels_window[]
static void __maximize_panel_size(RzPanels *panels)
static void __update_menu_contents(RzCore *core, RzPanelsMenu *menu, RzPanelsMenuItem *parent)
static int __show_status(RzCore *core, const char *msg)
static void __update_panel_contents(RzCore *core, RzPanel *panel, const char *cmdstr)
static char * menus_Colors[128]
static bool __check_if_mouse_x_illegal(RzCore *core, int x)
static void __layout_default(RzPanels *panels)
static void __print_stack_cb(void *user, void *p)
static void __handle_tab_new_with_cur_panel(RzCore *core)
static void __del_invalid_panels(RzCore *core)
static void __init_menu_disasm_asm_settings_layout(void *_core, const char *parent)
#define PANEL_TITLE_DISASSEMBLY
static void __panel_single_step_over(RzCore *core)
static void __search_strings_bin_create(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
static int __clear_layout_cb(void *user)
static void __seek_all(RzCore *core, ut64 addr)
static void __set_cursor(RzCore *core, bool cur)
static void __init_menu_screen_settings_layout(void *_core, const char *parent)
static int cmpstr(const void *_a, const void *_b)
static void __set_breakpoints_on_cursor(RzCore *core, RzPanel *panel)
static void __update_modal(RzCore *core, Sdb *menu_db, RModal *modal)
static int __io_cache_on_cb(void *user)
static bool __handle_zoom_mode(RzCore *core, const int key)
static bool __handle_cursor_mode(RzCore *core, const int key)
static int __string_data_sec_cb(void *user)
static void __handle_menu(RzCore *core, const int key)
static int __paste_cb(void *user)
#define PANEL_CMD_REGISTERS
static void __reset_scroll_pos(RzPanel *p)
static bool __init_panels(RzCore *core, RzPanels *panels)
#define PANEL_TITLE_BREAKPOINTS
static void __step_almighty_cb(void *user, RZ_UNUSED RzPanel *panel, RZ_UNUSED const RzPanelLayout dir, RZ_UNUSED RZ_NULLABLE const char *title)
static RzPanel * __get_panel(RzPanels *panels, int i)
static void __swap_panels(RzPanels *panels, int p0, int p1)
static void __panel_breakpoint(RzCore *core)
static void __redo_seek(RzCore *core)
static void __esil_init(RzCore *core)
static int __step_over_cb(void *user)
#define PANEL_TITLE_DISASMSUMMARY
static void __split_panel_horizontal(RzCore *core, RzPanel *p, const char *name, const char *cmd)
static void __clear_panels_menu(RzCore *core)
static void __dismantle_panel(RzPanels *ps, RzPanel *p)
static void __free_panel_model(RzPanel *panel)
static void __jmp_to_cursor_addr(RzCore *core, RzPanel *panel)
static int __esil_step_range_cb(void *user)
static void __insert_value(RzCore *core)
static void __esil_step_to(RzCore *core, ut64 end)
static void __set_curnode(RzCore *core, int idx)
static void __default_panel_print(RzCore *core, RzPanel *panel)
static const char * menus_File[]
static const char * help_msg_panels[]
static int __add_cmd_panel(void *user)
static void __update_menu(RzCore *core, const char *parent, RZ_NULLABLE RzPanelMenuUpdateCallback cb)
static void __cache_white_list(RzCore *core, RzPanel *panel)
static int __esil_step_to_cb(void *user)
static const char * panels_static[]
static int __program_cb(void *user)
static void __del_panel(RzCore *core, int pi)
static void __panel_all_clear(RzPanels *panels)
static void __init_menu_disasm_settings_layout(void *_core, const char *parent)
static RzPanel * __get_cur_panel(RzPanels *panels)
static const char * menus_iocache[]
static void __free_menu_item(RzPanelsMenuItem *item)
static void __call_visual_graph(RzCore *core)
static int __write_hex_cb(void *user)
static void __direction_register_cb(void *user, int direction)
static void __search_strings_data_create(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
static void __set_cmd_str_cache(RzCore *core, RzPanel *p, char *s)
static void __init_new_panels_root(RzCore *core)
static bool __check_func_diff(RzCore *core, RzPanel *p)
static void __init_rotate_db(RzCore *core)
static void __restore_panel_pos(RzPanel *panel)
static void __step_over_almighty_cb(void *user, RZ_UNUSED RzPanel *panel, RZ_UNUSED const RzPanelLayout dir, RZ_UNUSED RZ_NULLABLE const char *title)
static void __move_panel_to_down(RzCore *core, RzPanel *panel, int src)
#define PANEL_TITLE_COMMENTS
static void __direction_default_cb(void *user, int direction)
static void __create_default_panels(RzCore *core)
static void __create_almighty(RzCore *core, RzPanel *panel, Sdb *menu_db)
static char * __load_cmdf(RzCore *core, RzPanel *p, char *input, char *str)
static int __config_toggle_cb(void *user)
static void __create_panel_db(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
static void __direction_stack_cb(void *user, int direction)
static int __debugger_cb(void *user)
static int __calculator_cb(void *user)
static bool __check_func(RzCore *core)
static void prevOpcode(RzCore *core)
static const char * menus_Edit[]
static char * menus_View[]
static int __esil_init_cb(void *user)
static void __rotate_panel_cmds(RzCore *core, const char **cmds, const int cmdslen, const char *prefix, bool rev)
static void __fix_cursor_down(RzCore *core)
static bool __drag_and_resize(RzCore *core)
static bool filter(RzParse *p, ut64 addr, RzFlag *f, RzAnalysisHint *hint, char *data, char *str, int len, bool big_endian)
RZ_API ut64 rz_reg_getv(RzReg *reg, const char *name)
RZ_API const char * rz_reg_get_name(RzReg *reg, int role)
static void repeat(struct parse *, sopno, int, int)
@ RZ_ANALYSIS_FCN_TYPE_NULL
@ RZ_ANALYSIS_OP_MASK_BASIC
#define RZ_CONS_CLEAR_LINE
void(* RzConsEvent)(void *)
@ PANEL_LAYOUT_DEFAULT_DYNAMIC
@ PANEL_LAYOUT_DEFAULT_STATIC
int(* RzPanelsMenuCallback)(void *user)
RZ_API RZ_OWN char * rz_file_slurp(const char *str, RZ_NULLABLE size_t *usz)
RZ_API bool rz_file_rm(const char *file)
RZ_API RZ_OWN char * rz_file_path_join(RZ_NONNULL const char *s1, RZ_NULLABLE const char *s2)
Concatenate two paths to create a new one with s1+s2 with the correct path separator.
RZ_API RzList * rz_id_storage_list(RzIDStorage *s)
RZ_API int rz_io_close_all(RzIO *io)
RZ_API RzJson * rz_json_parse(char *text)
RZ_API void rz_json_free(RzJson *js)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API ut64 rz_num_get(RzNum *num, const char *str)
RZ_API ut64 rz_num_math(RzNum *num, const char *str)
void(* RzPanelRotateCallback)(void *user, bool rev)
void(* RzPanelAlmightyCallback)(void *user, RzPanel *panel, const RzPanelLayout dir, RZ_NULLABLE const char *title)
void(* RzPanelMenuUpdateCallback)(void *user, const char *parent)
RZ_API RZ_OWN char * rz_path_home_prefix(RZ_NULLABLE const char *path)
Return path prefixed by the home prefix.
RZ_API char * pj_drain(PJ *j)
RZ_API PJ * pj_end(PJ *j)
RZ_API PJ * pj_ks(PJ *j, const char *k, const char *v)
RZ_API PJ * pj_kn(PJ *j, const char *k, ut64 n)
#define RZ_STR_ISNOTEMPTY(x)
RZ_API char * rz_str_between(const char *str, const char *prefix, const char *suffix)
RZ_API const char * rz_str_sep(const char *base, const char *sep)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
RZ_API char * rz_str_append(char *ptr, const char *string)
RZ_API char * rz_str_new(const char *str)
RZ_API char RZ_API char * rz_str_newlen(const char *str, int len)
RZ_API size_t rz_str_ansi_len(const char *str)
RZ_API int rz_str_ansi_filter(char *str, char **out, int **cposs, int len)
RZ_API char * rz_str_dup(char *ptr, const char *string)
#define RZ_STR_ISEMPTY(x)
RZ_API char * rz_str_prefix_all(const char *s, const char *pfx)
RZ_API char * rz_str_ansi_crop(const char *str, unsigned int x, unsigned int y, unsigned int x2, unsigned int y2)
RZ_API const char * rz_str_rsep(const char *base, const char *p, const char *sep)
RZ_API char * rz_str_replace(char *str, const char *key, const char *val, int g)
RZ_API const char * rz_str_pad(const char ch, int len)
RZ_API char * rz_str_version(const char *program)
RZ_API const char * rz_str_word_get0(const char *str, int idx)
RZ_API bool rz_str_endswith(RZ_NONNULL const char *str, RZ_NONNULL const char *needle)
Checks if a string ends with a specifc sequence of characters (case sensitive)
RZ_API int rz_str_bounds(const char *str, int *h)
RZ_API size_t rz_str_split(char *str, char ch)
Split string str in place by using ch as a delimiter.
RZ_API RZ_OWN char * rz_strbuf_drain(RzStrBuf *sb)
RZ_API const char * rz_strbuf_set(RzStrBuf *sb, const char *s)
RZ_API char * rz_strbuf_get(RzStrBuf *sb)
RZ_API bool rz_strbuf_slice(RZ_NONNULL RzStrBuf *sb, size_t from, size_t len)
Cuts the current string into a substring.
RZ_API bool rz_strbuf_append(RzStrBuf *sb, const char *s)
RZ_API const char * rz_strbuf_setf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
RZ_API void rz_strbuf_fini(RzStrBuf *sb)
RZ_API RzStrBuf * rz_strbuf_new(const char *s)
RZ_API void rz_strbuf_free(RzStrBuf *sb)
RZ_API bool rz_strbuf_appendf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
RZ_API void rz_strbuf_init(RzStrBuf *sb)
RZ_API int rz_strbuf_length(RzStrBuf *sb)
RZ_API bool rz_strbuf_append_n(RzStrBuf *sb, const char *s, size_t l)
RZ_API bool rz_sys_mkdirp(const char *dir)
#define rz_sys_xsystem(cmd)
RZ_API RzList * rz_sys_dir(const char *path)
RZ_API FILE * rz_sys_fopen(const char *path, const char *mode)
#define RZ_JOIN_2_PATHS(p1, p2)
RZ_API int sdb_set(Sdb *s, const char *key, const char *val, ut32 cas)
RZ_API Sdb * sdb_new0(void)
RZ_API char * sdb_get(Sdb *s, const char *key, ut32 *cas)
RZ_API bool sdb_remove(Sdb *s, const char *key, ut32 cas)
RZ_API int sdb_count(Sdb *s)
RZ_API SdbList * sdb_foreach_list(Sdb *s, bool sorted)
static char * sdbkv_key(const SdbKv *kv)
RZ_API bool rz_core_seek_delta(RzCore *core, st64 delta, bool save)
Seek relative to current offset and optionally save the current offset in seek history.
RZ_API bool rz_core_seek_and_save(RzCore *core, ut64 addr, bool rb)
Save currently marked state in seek history and seek to addr .
RZ_API bool rz_core_seek_next(RzCore *core, const char *type, bool save)
Seek to the next type of item from current offset.
RZ_API bool rz_core_seek_prev(RzCore *core, const char *type, bool save)
Seek to the previous type of item from current offset.
RZ_API bool rz_core_seek(RzCore *core, ut64 addr, bool rb)
Seek to addr.
static struct sockaddr static addrlen static backlog const void msg
RzConsPrintablePalette pal
RzCoreTaskScheduler tasks
RzPanelsRoot * panels_root
struct rz_debug_plugin_t * cur
struct rz_io_desc_t * desc
struct rz_json_t::@304::@307 children
struct rz_json_t::@304::@306 num
RzLinePromptType prompt_type
RzPanelRotateCallback rotateCb
RzPanelDirectionCallback directionCb
RzPanelPrintCallback print_cb
RzPanelsRootState root_state
RzPanelsMenu * panels_menu
RZ_API void rz_core_task_enqueue_oneshot(RzCoreTaskScheduler *scheduler, RzCoreTaskOneShot func, void *user)
int replace(char *string, const char *token, const char *fmt,...)
RZ_API void rz_core_visual_asm(RzCore *core, ut64 off)
RZ_API int rz_core_visual_prevopsz(RzCore *core, ut64 addr)
RZ_API void rz_core_visual_offset(RzCore *core)
RZ_API void rz_core_visual_seek_animation_undo(RzCore *core)
RZ_API void rz_core_visual_applyDisMode(RzCore *core, int disMode)
RZ_API void rz_core_visual_disasm_up(RzCore *core, int *cols)
RZ_API bool rz_core_visual_hud(RzCore *core)
RZ_API void rz_core_visual_append_help(RzStrBuf *p, const char *title, const char **help)
RZ_API bool rz_core_prevop_addr(RzCore *core, ut64 start_addr, int numinstrs, ut64 *prev_addr)
RZ_API void rz_core_visual_prompt_input(RzCore *core)
RZ_API void rz_core_visual_browse(RzCore *core, const char *input)
RZ_API void rz_core_visual_applyHexMode(RzCore *core, int hexMode)
RZ_API int rz_core_visual(RzCore *core, const char *input)
RZ_API void rz_core_visual_disasm_down(RzCore *core, RzAsmOp *op, int *cols)
RZ_API int rz_core_visual_xrefs(RzCore *core, bool xref_to, bool fcnInsteadOfAddr)
RZ_API void rz_core_visual_toggle_hints(RzCore *core)
RZ_API void rz_core_visual_showcursor(RzCore *core, int x)
RZ_API void rz_core_visual_jump(RzCore *core, ut8 ch)
RZ_API int rz_line_hist_offset_up(RzLine *line)
RZ_API int rz_line_hist_offset_down(RzLine *line)
RZ_API void rz_core_visual_seek_animation_redo(RzCore *core)
RZ_API void rz_core_visual_mark(RzCore *core, ut8 ch)
RZ_API bool rz_core_visual_mark_dump(RzCore *core)
RZ_API void rz_core_visual_mark_seek(RzCore *core, ut8 ch)
RZ_API void rz_core_visual_mark_del(RzCore *core, ut8 ch)
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
RZ_API bool rz_core_yank_paste(RzCore *core, ut64 addr, ut64 len)
static const z80_opcode fd[]
static bool input(void *ud, zip_uint8_t *data, zip_uint64_t length)
int def(FILE *source, FILE *dest, int level)