From fac19dcc2ac1c50e950c875b7709e346018c225f Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 6 Oct 2022 19:13:26 +0200 Subject: [PATCH] Add RParse.justify() to easily fix commas and spaces ##disasm --- libr/include/r_parse.h | 2 +- libr/parse/p/parse_arm_pseudo.c | 20 +------------------- libr/parse/p/parse_x86_pseudo.c | 2 +- libr/parse/parse.c | 21 +++++++++++++++++++++ test/db/anal/bpf | 2 +- test/db/anal/evm.cs | 1 - test/db/anal/s390 | 2 +- test/db/anal/x86_32 | 2 +- 8 files changed, 27 insertions(+), 25 deletions(-) diff --git a/libr/include/r_parse.h b/libr/include/r_parse.h index 15d39c98bd..cdb28e1e66 100644 --- a/libr/include/r_parse.h +++ b/libr/include/r_parse.h @@ -71,7 +71,7 @@ R_API bool r_parse_subvar(RParse *p, RAnalFunction *f, ut64 addr, int oplen, cha R_API char *r_parse_immtrim(char *opstr); /* c */ -// why we have anal scoped things in rparse +R_API char *r_parse_justify(char *str); R_API char *r_parse_c_string(RAnal *anal, const char *code, char **error_msg); R_API char *r_parse_c_file(RAnal *anal, const char *path, const char *dir, char **error_msg); R_API void r_parse_c_reset(RParse *p); diff --git a/libr/parse/p/parse_arm_pseudo.c b/libr/parse/p/parse_arm_pseudo.c index 5c6b22853b..4e5e2c55de 100644 --- a/libr/parse/p/parse_arm_pseudo.c +++ b/libr/parse/p/parse_arm_pseudo.c @@ -274,25 +274,7 @@ static int parse(RParse *p, const char *data, char *str) { free (s); } free (buf); - // add space after commas - { - char *os = strdup (str); - int i, j; - for (i = j = 0; os[i]; i++,j++) { - char ch = os[i]; - str[j] = ch; - if (ch == ',') { - j++; - str[j] = ' '; - while (os[i + 1] == ' ') { - i++; - } - } - } - str[j] = 0; - free (os); - } - r_str_trim_tail (str); + str = r_parse_justify (str); return true; } diff --git a/libr/parse/p/parse_x86_pseudo.c b/libr/parse/p/parse_x86_pseudo.c index d3a80ab35f..527776ae85 100644 --- a/libr/parse/p/parse_x86_pseudo.c +++ b/libr/parse/p/parse_x86_pseudo.c @@ -298,7 +298,7 @@ static int parse(RParse *p, const char *data, char *str) { } else { replace (nw, wa, str); } - r_str_trim (str); + str = r_parse_justify (str); free (buf); return true; } diff --git a/libr/parse/parse.c b/libr/parse/parse.c index 98004538a9..db2573a22b 100644 --- a/libr/parse/parse.c +++ b/libr/parse/parse.c @@ -130,6 +130,27 @@ R_API bool r_parse_parse(RParse *p, const char *data, char *str) { ? p->cur->parse (p, data, str) : false; } +R_API char *r_parse_justify(char *str) { + // add space after commas + char *os = strdup (str); + int i, j; + for (i = j = 0; os[i]; i++,j++) { + char ch = os[i]; + str[j] = ch; + if (ch == ',') { + j++; + str[j] = ' '; + while (os[i + 1] == ' ') { + i++; + } + } + } + str[j] = 0; + free (os); + r_str_trim_tail (str); + return str; +} + R_API char *r_parse_immtrim(char *opstr) { if (R_STR_ISEMPTY (opstr)) { return NULL; diff --git a/test/db/anal/bpf b/test/db/anal/bpf index 27c0e3b7a9..bf5d9b06fd 100644 --- a/test/db/anal/bpf +++ b/test/db/anal/bpf @@ -12,7 +12,7 @@ address: 0x0 opcode: add 0x1 esilcost: 0 disasm: add 0x1 -pseudo: 0x1 += +pseudo: 0x1 += mnemonic: add description: add src to dst (32-bit) mask: ffffffffffffffff diff --git a/test/db/anal/evm.cs b/test/db/anal/evm.cs index 7114354b1a..e56f2cf618 100644 --- a/test/db/anal/evm.cs +++ b/test/db/anal/evm.cs @@ -29,7 +29,6 @@ address: 0x4 opcode: jump esilcost: 1 disasm: jump -pseudo: jum mnemonic: jump mask: ff prefix: 0 diff --git a/test/db/anal/s390 b/test/db/anal/s390 index 4865cabe0d..a302d5d0fc 100644 --- a/test/db/anal/s390 +++ b/test/db/anal/s390 @@ -135,7 +135,7 @@ EXPECT=<