diff --git a/libr/cons/pal.c b/libr/cons/pal.c index 4d771c0b75..e5cf00710f 100644 --- a/libr/cons/pal.c +++ b/libr/cons/pal.c @@ -6,10 +6,12 @@ R_API void r_cons_pal_init(const char *foo) { RCons *cons = r_cons_singleton (); memset (&cons->pal, 0, sizeof (cons->pal)); cons->pal.prompt = Color_YELLOW; + cons->pal.invalid = Color_BRED; cons->pal.offset = Color_GREEN; + cons->pal.floc = Color_CYAN; cons->pal.input = Color_WHITE; cons->pal.comment = Color_CYAN; - cons->pal.fname = Color_CYAN; + cons->pal.fname = Color_RED; cons->pal.fline = Color_CYAN; cons->pal.flag = Color_CYAN; cons->pal.label = Color_CYAN; @@ -20,7 +22,7 @@ R_API void r_cons_pal_init(const char *foo) { cons->pal.b0x7f = Color_CYAN; cons->pal.b0xff = Color_RED; cons->pal.other = Color_YELLOW; - cons->pal.btext = Color_YELLOW; + cons->pal.btext = Color_WHITE; cons->pal.push = Color_MAGENTA; cons->pal.pop = Color_BMAGENTA; cons->pal.nop = Color_BLUE; @@ -33,7 +35,7 @@ R_API void r_cons_pal_init(const char *foo) { cons->pal.ret = Color_RED; cons->pal.num = Color_YELLOW; cons->pal.reg = Color_CYAN; - cons->pal.reset = "\x1b[0m"; + cons->pal.reset = Color_RESET; } struct { diff --git a/libr/core/cmd_anal.c b/libr/core/cmd_anal.c index 5ef007ddb6..c0b1c44ea3 100644 --- a/libr/core/cmd_anal.c +++ b/libr/core/cmd_anal.c @@ -537,7 +537,7 @@ static int cmd_anal(void *data, const char *input) { } if (*name) { fcn = r_anal_fcn_find (core->anal, off, - R_ANAL_FCN_TYPE_FCN|R_ANAL_FCN_TYPE_SYM); + R_ANAL_FCN_TYPE_FCN|R_ANAL_FCN_TYPE_SYM|R_ANAL_FCN_TYPE_LOC); if (fcn) { eprintf ("fr %s %s@ 0x%"PFMT64x"\n", fcn->name, name, off); diff --git a/libr/core/disasm.c b/libr/core/disasm.c index a6e082f2bc..7e3b538b9e 100644 --- a/libr/core/disasm.c +++ b/libr/core/disasm.c @@ -193,7 +193,8 @@ R_API int r_core_print_disasm(RPrint *p, RCore *core, ut64 addr, ut8 *buf, int l #define P(x) (core->cons && core->cons->pal.x)? core->cons->pal.x // TODO: only if show_color? const char *color_comment = P(comment): Color_CYAN; - const char *color_fname = P(fname): Color_CYAN; + const char *color_fname = P(fname): Color_RED; + const char *color_floc = P(floc): Color_MAGENTA; const char *color_fline = P(fline): Color_CYAN; const char *color_flow = P(flow): Color_CYAN; const char *color_flag = P(flag): Color_CYAN; @@ -212,6 +213,7 @@ R_API int r_core_print_disasm(RPrint *p, RCore *core, ut64 addr, ut8 *buf, int l const char *color_pop = P(pop): Color_BYELLOW; const char *color_reg = P(reg): Color_YELLOW; const char *color_num = P(num): Color_YELLOW; + const char *color_invalid = P(invalid): Color_BRED; if (show_lines) ocols += 10; // XXX if (show_offset) ocols += 14; @@ -566,16 +568,18 @@ toro: if (f->type == R_ANAL_FCN_TYPE_LOC) { if (show_color) { r_cons_strcat (color_fline); - r_cons_printf ("|- "Color_RESET"%s (%d)\n", f->name, f->size); + r_cons_strcat ("|- "); + r_cons_strcat (color_floc); + r_cons_printf ("%s"Color_RESET" %d\n", f->name, f->size); r_cons_strcat (color_fline); r_cons_strcat ("| "Color_RESET); } else { - r_cons_printf ("|- %s (%d)\n| ", f->name, f->size); + r_cons_printf ("|- %s %d\n| ", f->name, f->size); } } else { const char *fmt = show_color? - "%s/ "Color_RESET"%s%s: %s"Color_RESET" (%d)\n": - "/ %s: %s (%d)\n| "; + "%s/ "Color_RESET"%s%s: %s"Color_RESET" %d\n": + "/ %s: %s %d\n| "; if (show_color) { r_cons_printf (fmt, color_fline, color_fname, (f->type==R_ANAL_FCN_TYPE_FCN||f->type==R_ANAL_FCN_TYPE_SYM)?"function": @@ -618,11 +622,12 @@ toro: if (show_flags) { flag = r_flag_get_i (core->flags, at); if (flag) { - if (show_lines && refline) - { - r_cons_strcat (color_flow); - r_cons_strcat (refline); - r_cons_strcat (Color_RESET); + if (show_lines && refline) { + if (show_color) { + r_cons_strcat (color_flow); + r_cons_strcat (refline); + r_cons_strcat (Color_RESET); + } else r_cons_strcat (refline); } if (show_offset) r_cons_printf ("; -- "); if (show_color) r_cons_strcat (color_flag); @@ -638,9 +643,11 @@ toro: } } if (!linesright && show_lines && line) { - r_cons_strcat (color_flow); - r_cons_strcat (line); - r_cons_strcat (Color_RESET); + if (show_color) { + r_cons_strcat (color_flow); + r_cons_strcat (line); + r_cons_strcat (Color_RESET); + } else r_cons_strcat (line); } if (show_offset) r_print_offset (core->print, at, (at==dest), show_offseg); @@ -767,14 +774,17 @@ toro: } if (linesright && show_lines && line) { - r_cons_strcat (color_flow); - r_cons_strcat (line); - r_cons_strcat (Color_RESET); + if (show_color) { + r_cons_strcat (color_flow); + r_cons_strcat (line); + r_cons_strcat (Color_RESET); + } else + r_cons_strcat (line); } if (show_color) { switch (analop.type) { case R_ANAL_OP_TYPE_NOP: - r_cons_printf (color_nop); + r_cons_strcat (color_nop); break; case R_ANAL_OP_TYPE_ADD: case R_ANAL_OP_TYPE_SUB: @@ -794,37 +804,40 @@ toro: break; case R_ANAL_OP_TYPE_JMP: case R_ANAL_OP_TYPE_UJMP: - r_cons_printf (color_jmp); + r_cons_strcat (color_jmp); break; case R_ANAL_OP_TYPE_CJMP: - r_cons_printf (color_cjmp); + r_cons_strcat (color_cjmp); break; case R_ANAL_OP_TYPE_CMP: - r_cons_printf (color_cmp); + r_cons_strcat (color_cmp); break; case R_ANAL_OP_TYPE_UCALL: case R_ANAL_OP_TYPE_CALL: - r_cons_printf (color_call); + r_cons_strcat (color_call); break; case R_ANAL_OP_TYPE_SWI: - r_cons_printf (color_swi); + r_cons_strcat (color_swi); break; case R_ANAL_OP_TYPE_ILL: case R_ANAL_OP_TYPE_TRAP: - r_cons_printf (color_trap); + r_cons_strcat (color_trap); break; case R_ANAL_OP_TYPE_RET: - r_cons_printf (color_ret); + r_cons_strcat (color_ret); break; case R_ANAL_OP_TYPE_PUSH: case R_ANAL_OP_TYPE_UPUSH: case R_ANAL_OP_TYPE_LOAD: - r_cons_printf (color_push); + r_cons_strcat (color_push); break; case R_ANAL_OP_TYPE_POP: case R_ANAL_OP_TYPE_STORE: - r_cons_printf (color_pop); + r_cons_strcat (color_pop); break; + case R_ANAL_OP_TYPE_NULL: + case R_ANAL_OP_TYPE_UNK: + r_cons_strcat (color_invalid); } } opstr = NULL; @@ -883,17 +896,16 @@ toro: r_cons_strcat (opstr); { /* show function name */ - RAnalFunction *f; + ut8 have_local = 0; + RAnalFunction *f, *cf; switch (analop.type) { case R_ANAL_OP_TYPE_JMP: case R_ANAL_OP_TYPE_CJMP: case R_ANAL_OP_TYPE_CALL: - { + cf = r_anal_fcn_find (core->anal, /* current function */ + at, R_ANAL_FCN_TYPE_NULL); f = r_anal_fcn_find (core->anal, analop.jump, R_ANAL_FCN_TYPE_NULL); - RAnalFunction *cf = r_anal_fcn_find (core->anal, /* current function */ - at, R_ANAL_FCN_TYPE_NULL); - ut8 have_local = 0; if (f && !strstr (opstr, f->name)) { if (f->locals != NULL) { RAnalFcnLocal *l; @@ -923,7 +935,6 @@ toro: r_cons_strcat (Color_RESET); } } - } break; } } diff --git a/libr/include/r_cons.h b/libr/include/r_cons.h index bfde20b060..36f4c834f7 100644 --- a/libr/include/r_cons.h +++ b/libr/include/r_cons.h @@ -60,6 +60,7 @@ typedef struct r_cons_palette_t { char *offset; char *comment; char *fname; + char *floc; char *fline; char *flag; char *label; @@ -85,6 +86,7 @@ typedef struct r_cons_palette_t { char *cmp; char *num; char *reg; + char *invalid; } RConsPalette; typedef void (*RConsEvent)(void *);