Implement ecHj to list highlight rules in json format ##cons

Authored-by: Rishi Bhatt <bhattrishi8@gmail.com>
This commit is contained in:
radare 2020-03-04 00:08:39 +01:00 committed by GitHub
parent e345e7d829
commit db39ca95c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 6 deletions

View file

@ -626,14 +626,32 @@ R_API void r_meta_print(RAnal *a, RAnalMetaItem *d, int rad, PJ *pj, bool show_f
pj_kn (pj, "offset", d->from);
pj_ks (pj, "type", r_meta_type_to_string (d->type));
pj_k (pj, "name");
if (d->type == 's' && (base64_str = r_base64_encode_dyn (d->str, -1))) {
pj_s (pj, base64_str);
free (base64_str);
if (d->type == 'H') {
pj_k (pj, "color");
ut8 r = 0, g = 0, b = 0, A = 0;
const char *esc = strchr (d->str, '\x1b');
if (esc) {
r_cons_rgb_parse (esc, &r, &g, &b, &A);
char *rgb_str = r_cons_rgb_tostring (r, g, b);
base64_str = r_base64_encode_dyn (rgb_str, -1);
if (d->type == 's' && base64_str) {
pj_s (pj, base64_str);
free (base64_str);
} else {
pj_s (pj, rgb_str);
}
free (rgb_str);
} else {
pj_s (pj, str);
}
} else {
pj_s (pj, str);
pj_k (pj, "name");
if (d->type == 's' && (base64_str = r_base64_encode_dyn (d->str, -1))) {
pj_s (pj, base64_str);
} else {
pj_s (pj, str);
}
}
if (d->type == 'd') {
pj_kn (pj, "size", d->size);
} else if (d->type == 's') {

View file

@ -480,6 +480,10 @@ static int cmd_eval(void *data, const char *input) {
r_meta_list (core->anal, R_META_TYPE_HIGHLIGHT, 0);
r_str_argv_free (argv);
return false;
case 'j':
r_meta_list (core->anal, R_META_TYPE_HIGHLIGHT, 'j');
r_str_argv_free (argv);
return false;
case '*':
r_meta_list (core->anal, R_META_TYPE_HIGHLIGHT, '*');
r_str_argv_free (argv);