From dbe651db3362c65a7a68647bd64e45cdd4ed5ea1 Mon Sep 17 00:00:00 2001 From: Giovanni <561184+wargio@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:46:27 +0800 Subject: [PATCH] Normalize the output of L subcommands (#5077) --- librz/arch/p/asm/asm_avr.c | 2 +- librz/core/casm.c | 184 +++-- librz/core/cbin.c | 2 +- librz/core/cconfig.c | 4 +- librz/core/ccrypto.c | 48 +- librz/core/cdebug.c | 67 +- librz/core/chash.c | 68 +- librz/core/clang.c | 34 +- librz/core/cmd/cmd_analysis.c | 2 +- librz/core/cmd/cmd_api.c | 3 + librz/core/cmd/cmd_info.c | 3 + librz/core/cmd/cmd_plugins.c | 8 +- librz/core/cmd_descs/cmd_analysis.yaml | 1 - librz/core/cmd_descs/cmd_debug.yaml | 7 - librz/core/cmd_descs/cmd_descs.c | 97 +-- librz/core/cmd_descs/cmd_descs.h | 2 + librz/core/cmd_descs/cmd_descs_generate.py | 7 + librz/core/cmd_descs/cmd_flag.yaml | 12 - librz/core/cmd_descs/cmd_math.yaml | 1 - librz/core/cmd_descs/cmd_plugins.yaml | 77 +- librz/core/cmd_descs/cmd_search.yaml | 30 - librz/core/core.c | 30 +- librz/core/cparser.c | 24 +- librz/crypto/p/crypto_aes.c | 2 +- librz/include/rz_core.h | 3 +- librz/main/rz-asm.c | 6 +- test/db/archos/linux-x64/cmd_list | 16 +- test/db/cmd/cmd_help | 9 +- test/db/cmd/cmd_list | 914 ++++++++++++++------- test/db/tools/rz_hash | 2 +- 30 files changed, 1006 insertions(+), 659 deletions(-) diff --git a/librz/arch/p/asm/asm_avr.c b/librz/arch/p/asm/asm_avr.c index 78c9253226..c4ffda15fb 100644 --- a/librz/arch/p/asm/asm_avr.c +++ b/librz/arch/p/asm/asm_avr.c @@ -83,6 +83,6 @@ RzAsmPlugin rz_asm_plugin_avr = { "ATmega88," "ATxmega128a4u," "ATTiny48," - "ATTiny88,", + "ATTiny88", .get_cpu_desc = avr_cpu_descriptions, }; diff --git a/librz/core/casm.c b/librz/core/casm.c index d0256d3a29..159c57e92e 100644 --- a/librz/core/casm.c +++ b/librz/core/casm.c @@ -94,73 +94,93 @@ static const char *has_esil(RzCore *core, const char *name) { return "___"; } -RZ_API RzCmdStatus rz_core_asm_plugin_print(RzCore *core, RzAsmPlugin *ap, RzCmdStateOutput *state, const char *license, const char *flags) { - const char *feat2; - char feat[6] = "__"; - char bits[32]; - PJ *pj = state->d.pj; - bits[0] = 0; - if (ap->bits == 27) { - strcat(bits, "27"); - } else if (ap->bits == 0) { - strcat(bits, "any"); - } else { - if (ap->bits & 4) { - strcat(bits, "4 "); - } - if (ap->bits & 8) { - strcat(bits, "8 "); - } - if (ap->bits & 16) { - strcat(bits, "16 "); - } - if (ap->bits & 32) { - strcat(bits, "32 "); - } - if (ap->bits & 64) { - strcat(bits, "64"); - } +static void bits_to_string(int bits, char output[32]) { + if (bits == 27) { + strcat(output, "27"); + return; + } else if (!bits) { + strcat(output, "any"); + return; } + if (bits & 4) { + strcat(output, "4 "); + } + if (bits & 8) { + strcat(output, "8 "); + } + if (bits & 16) { + strcat(output, "16 "); + } + if (bits & 32) { + strcat(output, "32 "); + } + if (bits & 64) { + strcat(output, "64"); + } +} + +static RzCmdStatus core_asm_plugin_print(RzCore *core, RzAsmPlugin *ap, RzCmdStateOutput *state, const char *flags) { + const char *feat2; + char features[6] = "__"; + char bits[32] = { 0 }; + PJ *pj = state->d.pj; + bits_to_string(ap->bits, bits); if (ap->assemble && ap->disassemble) { - strcpy(feat, "ad"); + strcpy(features, "ad"); } if (ap->assemble && !ap->disassemble) { - strcpy(feat, "a_"); + strcpy(features, "a_"); } if (!ap->assemble && ap->disassemble) { - strcpy(feat, "_d"); + strcpy(features, "_d"); } feat2 = has_esil(core, ap->name); - strcat(feat, feat2); + strcat(features, feat2); for (int i = 0; flags && flags[i] != '\0'; i++) { - if (strchr(feat, flags[i]) == NULL) { + if (strchr(features, flags[i]) == NULL) { return RZ_CMD_STATUS_OK; } } + + const char *name = rz_str_get(ap->name); + const char *description = rz_str_get(ap->desc); + const char *license = rz_str_get(ap->license); + const char *author = rz_str_get(ap->author); + const char *version = rz_str_get(ap->version); switch (state->mode) { case RZ_OUTPUT_MODE_QUIET: { - rz_cons_println(ap->name); + rz_cons_println(name); + break; + } + case RZ_OUTPUT_MODE_TABLE: { + rz_table_add_rowf(state->d.t, "sssssss", features, bits, name, license, version, author, description); break; } case RZ_OUTPUT_MODE_JSON: { - pj_ko(pj, ap->name); + pj_ko(pj, name); pj_ks(pj, "bits", bits); pj_ks(pj, "license", license); - pj_ks(pj, "description", ap->desc); - pj_ks(pj, "features", feat); + pj_ks(pj, "description", description); + pj_ks(pj, "features", features); + if (ap->author) { + pj_ks(pj, "author", author); + } + if (ap->version) { + pj_ks(pj, "version", version); + } pj_end(pj); break; } case RZ_OUTPUT_MODE_STANDARD: { rz_cons_printf("%s %-10s %-11s %-7s %s", - feat, bits, ap->name, license, ap->desc); + features, bits, name, license, description); if (ap->author) { - rz_cons_printf(" (by %s)", ap->author); + rz_cons_printf(" (by %s)", author); } if (ap->version) { - rz_cons_printf(" v%s", ap->version); + rz_cons_printf(" v%s", version); } rz_cons_newline(); break; @@ -173,10 +193,58 @@ RZ_API RzCmdStatus rz_core_asm_plugin_print(RzCore *core, RzAsmPlugin *ap, RzCmd return RZ_CMD_STATUS_OK; } -RZ_API RzCmdStatus rz_core_asm_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_NULLABLE const char *arch, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *flags) { +RZ_API RzCmdStatus rz_core_asm_cpu_plugin_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *arch_name) { rz_return_val_if_fail(core && state, RZ_CMD_STATUS_ERROR); - int i; RzAsm *a = core->rasm; + + if (RZ_STR_ISEMPTY(arch_name)) { + return RZ_CMD_STATUS_WRONG_ARGS; + } + + bool found = false; + RzAsmPlugin *plugin = ht_sp_find(a->plugins, arch_name, &found); + if (!found || !plugin) { + return RZ_CMD_STATUS_WRONG_ARGS; + } + + rz_cmd_state_output_array_start(state); + if (RZ_STR_ISEMPTY(plugin->cpus)) { + // there are no cpus to show. + rz_cmd_state_output_array_end(state); + return RZ_CMD_STATUS_OK; + } + + const char *name; + RzListIter *it; + RzList *list = rz_str_split_duplist_n(plugin->cpus, ",", 0, true); + if (!list) { + return RZ_CMD_STATUS_ERROR; + } + + PJ *pj = state->d.pj; + rz_list_foreach (list, it, name) { + switch (state->mode) { + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_println(name); + break; + case RZ_OUTPUT_MODE_JSON: + pj_s(pj, name); + break; + default: + rz_warn_if_reached(); + break; + } + } + + rz_list_free(list); + rz_cmd_state_output_array_end(state); + return RZ_CMD_STATUS_OK; +} + +RZ_API RzCmdStatus rz_core_asm_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *flags) { + rz_return_val_if_fail(core && state, RZ_CMD_STATUS_ERROR); + RzAsm *a = core->rasm; + RzIterator *iter = ht_sp_as_iter(a->plugins); RzList *plugin_list = rz_list_new_from_iterator(iter); if (!plugin_list) { @@ -187,33 +255,19 @@ RZ_API RzCmdStatus rz_core_asm_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RzListIter *it; RzAsmPlugin *ap; RzCmdStatus status; - if (arch) { - rz_list_foreach (plugin_list, it, ap) { - if (ap->cpus && !strcmp(arch, ap->name)) { - char *c = rz_str_dup(ap->cpus); - int n = rz_str_split(c, ','); - for (i = 0; i < n; i++) { - rz_cons_println(rz_str_word_get0(c, i)); - } - free(c); - break; - } + + rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "sssssss", "name", "bits", "features", "license", "version", "author", "description"); + rz_list_foreach (plugin_list, it, ap) { + status = core_asm_plugin_print(core, ap, state, flags); + if (status != RZ_CMD_STATUS_OK) { + rz_iterator_free(iter); + rz_list_free(plugin_list); + return status; } - } else { - rz_cmd_state_output_array_start(state); - rz_list_foreach (plugin_list, it, ap) { - const char *license = ap->license - ? ap->license - : "unknown"; - status = rz_core_asm_plugin_print(core, ap, state, license, flags); - if (status != RZ_CMD_STATUS_OK) { - rz_iterator_free(iter); - rz_list_free(plugin_list); - return status; - } - } - rz_cmd_state_output_array_end(state); } + rz_cmd_state_output_array_end(state); + rz_list_free(plugin_list); rz_iterator_free(iter); return RZ_CMD_STATUS_OK; diff --git a/librz/core/cbin.c b/librz/core/cbin.c index 793001e3cc..88d48af6b1 100644 --- a/librz/core/cbin.c +++ b/librz/core/cbin.c @@ -4886,7 +4886,7 @@ RZ_IPI RzCmdStatus rz_core_binxtr_plugin_print(const RzBinXtrPlugin *bx, RzCmdSt rz_cmd_state_output_set_columnsf(state, "sss", "type", "name", "description"); switch (state->mode) { case RZ_OUTPUT_MODE_QUIET: - rz_cons_printf("%s\n", bx->name); + rz_cons_println(bx->name); break; case RZ_OUTPUT_MODE_JSON: pj_o(state->d.pj); diff --git a/librz/core/cconfig.c b/librz/core/cconfig.c index ba7b9d1aa8..13c8b75cef 100644 --- a/librz/core/cconfig.c +++ b/librz/core/cconfig.c @@ -417,7 +417,7 @@ static bool cb_asmcpu(void *user, void *data) { /* print verbose help instead of plain option listing */ RzCmdStateOutput state = { 0 }; rz_cmd_state_output_init(&state, RZ_OUTPUT_MODE_STANDARD); - rz_core_asm_plugins_print(core, rz_config_get(core->config, "asm.arch"), &state, NULL); + rz_core_asm_cpu_plugin_print(core, &state, rz_config_get(core->config, "asm.arch")); rz_cmd_state_output_print(&state); rz_cmd_state_output_fini(&state); return 0; @@ -503,7 +503,7 @@ static bool cb_asmarch(void *user, void *data) { /* print more verbose help instead of plain option values */ RzCmdStateOutput state = { 0 }; rz_cmd_state_output_init(&state, RZ_OUTPUT_MODE_STANDARD); - rz_core_asm_plugins_print(core, NULL, &state, NULL); + rz_core_asm_plugins_print(core, &state, NULL); rz_cmd_state_output_print(&state); rz_cmd_state_output_fini(&state); return false; diff --git a/librz/core/ccrypto.c b/librz/core/ccrypto.c index 1a4b7fe759..69372c099d 100644 --- a/librz/core/ccrypto.c +++ b/librz/core/ccrypto.c @@ -5,41 +5,41 @@ #include static RzCmdStatus core_crypto_plugin_print(RzCmdStateOutput *state, const RzCryptoPlugin *plugin) { + const char *name = rz_str_get(plugin->name); + const char *license = rz_str_get(plugin->license); + const char *author = rz_str_get(plugin->author); + PJ *pj = state->d.pj; switch (state->mode) { - case RZ_OUTPUT_MODE_QUIET: { - rz_cons_printf("%s ", plugin->name); + case RZ_OUTPUT_MODE_QUIET: + rz_cons_println(name); break; - } - case RZ_OUTPUT_MODE_JSON: { + case RZ_OUTPUT_MODE_JSON: pj_o(pj); - pj_ks(pj, "name", plugin->name); - pj_ks(pj, "license", plugin->license); - pj_ks(pj, "author", plugin->author); + pj_ks(pj, "name", name); + pj_ks(pj, "license", license); + pj_ks(pj, "author", author); pj_end(pj); break; - } - case RZ_OUTPUT_MODE_STANDARD: { - rz_cons_printf("%-14s %-10s %s\n", plugin->name, plugin->license, plugin->author); - + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%-14s %-10s %s\n", name, license, author); break; - } - default: { + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "sss", name, license, author); + break; + default: rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; } - } return RZ_CMD_STATUS_OK; } RZ_API RzCmdStatus rz_core_crypto_plugins_print(RzCrypto *cry, RzCmdStateOutput *state) { rz_return_val_if_fail(cry, RZ_CMD_STATUS_ERROR); - RzCmdStatus status; rz_cmd_state_output_array_start(state); - if (state->mode == RZ_OUTPUT_MODE_STANDARD) { - rz_cons_println("algorithm license author"); - } + rz_cmd_state_output_set_columnsf(state, "sss", "algorithm", "license", "author"); + RzIterator *iter = ht_sp_as_iter(cry->plugins); RzList *plugin_list = rz_list_new_from_iterator(iter); if (!plugin_list) { @@ -47,22 +47,18 @@ RZ_API RzCmdStatus rz_core_crypto_plugins_print(RzCrypto *cry, RzCmdStateOutput return RZ_CMD_STATUS_ERROR; } rz_list_sort(plugin_list, (RzListComparator)rz_crypto_plugin_cmp, NULL); + + RzCmdStatus status = RZ_CMD_STATUS_OK; RzListIter *it; RzCryptoPlugin *plugin; rz_list_foreach (plugin_list, it, plugin) { status = core_crypto_plugin_print(state, plugin); if (status != RZ_CMD_STATUS_OK) { - rz_list_free(plugin_list); - rz_iterator_free(iter); - return status; + break; } } rz_list_free(plugin_list); rz_iterator_free(iter); - - if (state->mode == RZ_OUTPUT_MODE_QUIET) { - rz_cons_newline(); - } rz_cmd_state_output_array_end(state); - return RZ_CMD_STATUS_OK; + return status; } diff --git a/librz/core/cdebug.c b/librz/core/cdebug.c index a7d3718b5c..16e3b0e1ed 100644 --- a/librz/core/cdebug.c +++ b/librz/core/cdebug.c @@ -307,40 +307,66 @@ RZ_IPI void rz_core_debug_attach(RzCore *core, int pid) { rz_io_system(core->io, rz_strf(buf, "pid %d", core->dbg->pid)); } -RZ_API RzCmdStatus rz_core_debug_plugin_print(RzDebug *dbg, RzDebugPlugin *plugin, RzCmdStateOutput *state, int count, char *spaces) { +static void bits_to_string(ut32 bits, char output[32]) { + + if (bits & RZ_SYS_BITS_8) { + strcat(output, "8 "); + } + if (bits & RZ_SYS_BITS_16) { + strcat(output, "16 "); + } + if (bits & RZ_SYS_BITS_32) { + strcat(output, "32 "); + } + if (bits & RZ_SYS_BITS_64) { + strcat(output, "64"); + } +} + +static RzCmdStatus core_debug_plugin_print(RzDebug *dbg, RzDebugPlugin *plugin, RzCmdStateOutput *state, ut64 count, char *spaces) { + const char *arch = rz_str_get(plugin->arch); + const char *name = rz_str_get(plugin->name); + const char *license = rz_str_get(plugin->license); + const char *version = rz_str_get(plugin->version); + bool selected = plugin == dbg->cur; + char bits[32] = { 0 }; + bits_to_string(plugin->bits, bits); + PJ *pj = state->d.pj; switch (state->mode) { - case RZ_OUTPUT_MODE_QUIET: { - rz_cons_printf("%s\n", plugin->name); + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "nsssss", count, selected ? "yes" : "", name, license, bits, arch); break; - } - case RZ_OUTPUT_MODE_JSON: { + case RZ_OUTPUT_MODE_QUIET: + rz_cons_printf("%s\n", name); + break; + case RZ_OUTPUT_MODE_JSON: pj_o(pj); - pj_ks(pj, "arch", plugin->arch); - pj_ks(pj, "name", plugin->name); - pj_ks(pj, "license", plugin->license); + pj_ks(pj, "arch", arch); + pj_ks(pj, "name", name); + pj_ks(pj, "bits", bits); + pj_ks(pj, "license", license); + pj_ks(pj, "version", version); + if (selected) { + pj_kb(pj, "selected", true); + } pj_end(pj); break; - } - case RZ_OUTPUT_MODE_STANDARD: { - rz_cons_printf("%d %s %s %s%s\n", - count, (plugin == dbg->cur) ? "dbg" : "---", - plugin->name, spaces, plugin->license); + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%" PFMT64u " %s %s %s%s\n", count, selected ? "dbg" : "---", name, spaces, license); break; - } - default: { + default: rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; } - } return RZ_CMD_STATUS_OK; } RZ_API RzCmdStatus rz_core_debug_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_OUT RzCmdStateOutput *state) { rz_return_val_if_fail(core && state, RZ_CMD_STATUS_ERROR); - int count = 0; + ut64 count = 0; char spaces[16]; - memset(spaces, ' ', 15); + memset(spaces, ' ', sizeof(spaces)); spaces[15] = 0; RzDebug *dbg = core->dbg; RzCmdStatus status; @@ -348,6 +374,7 @@ RZ_API RzCmdStatus rz_core_debug_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core return RZ_CMD_STATUS_ERROR; } rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "nsssss", "idx", "selected", "name", "license", "bits", "arch"); RzIterator *iter = ht_sp_as_iter(dbg->plugins); RzList *plugin_list = rz_list_new_from_iterator(iter); if (!plugin_list) { @@ -358,9 +385,9 @@ RZ_API RzCmdStatus rz_core_debug_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core RzListIter *it; RzDebugPlugin *plugin; rz_list_foreach (plugin_list, it, plugin) { - int sp = 8 - strlen(plugin->name); + size_t sp = 8 - strlen(plugin->name); spaces[sp] = 0; - status = rz_core_debug_plugin_print(dbg, plugin, state, count, spaces); + status = core_debug_plugin_print(dbg, plugin, state, count, spaces); if (status != RZ_CMD_STATUS_OK) { rz_iterator_free(iter); rz_list_free(plugin_list); diff --git a/librz/core/chash.c b/librz/core/chash.c index 7388cabb49..eb283a6ee8 100644 --- a/librz/core/chash.c +++ b/librz/core/chash.c @@ -3,56 +3,62 @@ #include -RZ_API RzCmdStatus rz_core_hash_plugin_print(RzCmdStateOutput *state, const RzHashPlugin *plugin) { +static RzCmdStatus core_hash_plugin_print(RzCmdStateOutput *state, const RzHashPlugin *plugin) { + const char *name = rz_str_get(plugin->name); + const char *license = rz_str_get(plugin->license); + const char *author = rz_str_get(plugin->author); + PJ *pj = state->d.pj; switch (state->mode) { - case RZ_OUTPUT_MODE_QUIET: { - rz_cons_printf("%s ", plugin->name); + case RZ_OUTPUT_MODE_QUIET: + rz_cons_println(name); break; - } - case RZ_OUTPUT_MODE_JSON: { + case RZ_OUTPUT_MODE_JSON: pj_o(pj); - pj_ks(pj, "name", plugin->name); - pj_ks(pj, "license", plugin->license); - pj_ks(pj, "author", plugin->author); + pj_ks(pj, "name", name); + pj_ks(pj, "license", license); + pj_ks(pj, "author", author); pj_end(pj); break; - } - case RZ_OUTPUT_MODE_STANDARD: { - rz_cons_printf("%-14s %-10s %s\n", plugin->name, plugin->license, plugin->author); - + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%-14s %-10s %s\n", name, license, author); break; - } - default: { + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "sss", name, license, author); + break; + default: rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; } - } return RZ_CMD_STATUS_OK; } RZ_API RzCmdStatus rz_core_hash_plugins_print(RZ_NONNULL RZ_BORROW RzHash *hash, RZ_OUT RzCmdStateOutput *state) { rz_return_val_if_fail(hash && state, RZ_CMD_STATUS_ERROR); - RzCmdStatus status; - RzIterator *it = ht_sp_as_iter(hash->plugins); - RzHashPlugin **val; - rz_cmd_state_output_array_start(state); - if (state->mode == RZ_OUTPUT_MODE_STANDARD) { - rz_cons_println("algorithm license author"); + RzIterator *iter = ht_sp_as_iter(hash->plugins); + RzList *plugin_list = rz_list_new_from_iterator(iter); + if (!plugin_list) { + rz_iterator_free(iter); + return RZ_CMD_STATUS_ERROR; } - rz_iterator_foreach(it, val) { - const RzHashPlugin *plugin = *val; - status = rz_core_hash_plugin_print(state, plugin); + rz_list_sort(plugin_list, (RzListComparator)rz_crypto_plugin_cmp, NULL); + + rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "sss", "algorithm", "license", "author"); + + RzCmdStatus status = RZ_CMD_STATUS_OK; + RzListIter *it; + RzHashPlugin *plugin; + rz_list_foreach (plugin_list, it, plugin) { + status = core_hash_plugin_print(state, plugin); if (status != RZ_CMD_STATUS_OK) { - rz_iterator_free(it); - return status; + break; } } - rz_iterator_free(it); - if (state->mode == RZ_OUTPUT_MODE_QUIET) { - rz_cons_newline(); - } + + rz_list_free(plugin_list); + rz_iterator_free(iter); rz_cmd_state_output_array_end(state); - return RZ_CMD_STATUS_OK; + return status; } diff --git a/librz/core/clang.c b/librz/core/clang.c index 2922d9a514..d19e7fb4ce 100644 --- a/librz/core/clang.c +++ b/librz/core/clang.c @@ -3,30 +3,33 @@ #include -RZ_API RzCmdStatus rz_core_lang_plugin_print(RzLangPlugin *lp, RzCmdStateOutput *state) { - const char *license = lp->license - ? lp->license - : "???"; +static RzCmdStatus core_lang_plugin_print(RzLangPlugin *lp, RzCmdStateOutput *state) { + const char *name = rz_str_get(lp->name); + const char *description = rz_str_get(lp->desc); + const char *license = rz_str_get(lp->license); + PJ *pj = state->d.pj; switch (state->mode) { - case RZ_OUTPUT_MODE_JSON: { + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "sss", name, description, license); + break; + case RZ_OUTPUT_MODE_JSON: pj_o(pj); - pj_ks(pj, "name", lp->name); - pj_ks(pj, "description", lp->desc); + pj_ks(pj, "name", name); + pj_ks(pj, "description", description); pj_ks(pj, "license", license); pj_end(pj); break; - } - case RZ_OUTPUT_MODE_STANDARD: { - rz_cons_printf("%s: %s (%s)\n", - lp->name, lp->desc, license); + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%s: %s (%s)\n", name, description, license); break; - } - default: { + case RZ_OUTPUT_MODE_QUIET: + rz_cons_println(name); + break; + default: rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; } - } return RZ_CMD_STATUS_OK; } @@ -38,8 +41,9 @@ RZ_API RzCmdStatus rz_core_lang_plugins_print(RzLang *lang, RzCmdStateOutput *st return RZ_CMD_STATUS_ERROR; } rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "sss", "name", "description", "license"); rz_list_foreach (lang->langs, iter, lp) { - status = rz_core_lang_plugin_print(lp, state); + status = core_lang_plugin_print(lp, state); if (status != RZ_CMD_STATUS_OK) { return status; } diff --git a/librz/core/cmd/cmd_analysis.c b/librz/core/cmd/cmd_analysis.c index cdb572617e..0d7b286eba 100644 --- a/librz/core/cmd/cmd_analysis.c +++ b/librz/core/cmd/cmd_analysis.c @@ -5499,7 +5499,7 @@ RZ_IPI RzCmdStatus rz_list_mne_handler(RzCore *core, int argc, const char **argv } RZ_IPI RzCmdStatus rz_list_plugins_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state) { - return rz_core_asm_plugins_print(core, NULL, state, NULL); + return rz_core_asm_plugins_print(core, state, NULL); } RZ_IPI RzCmdStatus rz_list_cpu_details_handler(RzCore *core, int argc, const char **argv) { diff --git a/librz/core/cmd/cmd_api.c b/librz/core/cmd/cmd_api.c index cf1525385a..af4ccbf0ed 100644 --- a/librz/core/cmd/cmd_api.c +++ b/librz/core/cmd/cmd_api.c @@ -412,6 +412,9 @@ RZ_API RzCmdDesc *rz_cmd_get_desc(RzCmd *cmd, const char *cmd_identifier) { * Command descriptors that support multiple output modes can also have a * default one. This function can be used to set it. * + * It's not possible to add a default mode when RZ_OUTPUT_MODE_STANDARD is + * defined because it doesn't have a letter assigned unlike the other outputs. + * * \return True if the default output mode was changed, false otherwise. */ RZ_API bool rz_cmd_desc_set_default_mode(RzCmdDesc *cd, RzOutputMode mode) { diff --git a/librz/core/cmd/cmd_info.c b/librz/core/cmd/cmd_info.c index 6ce43167b9..b0520f4523 100644 --- a/librz/core/cmd/cmd_info.c +++ b/librz/core/cmd/cmd_info.c @@ -534,6 +534,9 @@ static bool print_demangler_info(const RzDemanglerPlugin *plugin, RzDemanglerFla pj_ks(state->d.pj, "author", plugin->author); pj_end(state->d.pj); break; + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%-8s %-12s %s\n", plugin->language, plugin->license, plugin->author); + break; case RZ_OUTPUT_MODE_TABLE: rz_table_add_rowf(state->d.t, "sss", plugin->language, plugin->license, plugin->author); break; diff --git a/librz/core/cmd/cmd_plugins.c b/librz/core/cmd/cmd_plugins.c index 4d450ab424..ccfa20ab19 100644 --- a/librz/core/cmd/cmd_plugins.c +++ b/librz/core/cmd/cmd_plugins.c @@ -19,9 +19,13 @@ RZ_IPI RzCmdStatus rz_plugins_lang_print_handler(RzCore *core, int argc, const c RZ_IPI RzCmdStatus rz_plugins_asm_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state) { if (argc > 1) { - return rz_core_asm_plugins_print(core, NULL, state, argv[1]); + return rz_core_asm_plugins_print(core, state, argv[1]); } - return rz_core_asm_plugins_print(core, NULL, state, NULL); + return rz_core_asm_plugins_print(core, state, NULL); +} + +RZ_IPI RzCmdStatus rz_plugins_asm_cpu_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state) { + return rz_core_asm_cpu_plugin_print(core, state, argv[1]); } RZ_IPI RzCmdStatus rz_plugins_core_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state) { diff --git a/librz/core/cmd_descs/cmd_analysis.yaml b/librz/core/cmd_descs/cmd_analysis.yaml index 31fe49ff2a..f3867bce67 100644 --- a/librz/core/cmd_descs/cmd_analysis.yaml +++ b/librz/core/cmd_descs/cmd_analysis.yaml @@ -2363,7 +2363,6 @@ commands: summary: List syscalls cname: analysis_syscall_print type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON diff --git a/librz/core/cmd_descs/cmd_debug.yaml b/librz/core/cmd_descs/cmd_debug.yaml index c8f8fb68e7..8ecb46cb23 100644 --- a/librz/core/cmd_descs/cmd_debug.yaml +++ b/librz/core/cmd_descs/cmd_debug.yaml @@ -356,7 +356,6 @@ commands: cname: cmd_debug_descriptor_list args: [] type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -704,7 +703,6 @@ commands: - RZ_OUTPUT_MODE_RIZIN - RZ_OUTPUT_MODE_JSON - RZ_OUTPUT_MODE_QUIET - default_mode: RZ_OUTPUT_MODE_STANDARD args: [] - name: dk summary: Debug signals management @@ -724,7 +722,6 @@ commands: - RZ_OUTPUT_MODE_JSON - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_TABLE - default_mode: RZ_OUTPUT_MODE_STANDARD args: [] - name: dkn summary: Resolve the name of signal given the number @@ -774,7 +771,6 @@ commands: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - RZ_OUTPUT_MODE_QUIET - default_mode: RZ_OUTPUT_MODE_STANDARD args: [] - name: dm summary: Memory map commands @@ -986,7 +982,6 @@ commands: summary: List current pid and children cname: cmd_debug_pid_list type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -999,7 +994,6 @@ commands: summary: List all attachable pids cname: cmd_debug_pid_attachable_list type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -1057,7 +1051,6 @@ commands: summary: List threads of specified or current cname: cmd_debug_thread_list type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON diff --git a/librz/core/cmd_descs/cmd_descs.c b/librz/core/cmd_descs/cmd_descs.c index e6bcc7449d..e932b56669 100644 --- a/librz/core/cmd_descs/cmd_descs.c +++ b/librz/core/cmd_descs/cmd_descs.c @@ -615,6 +615,7 @@ static const RzCmdDescArg sdb_namespace_load_args[3]; static const RzCmdDescArg plugins_load_args[2]; static const RzCmdDescArg plugins_unload_args[2]; static const RzCmdDescArg plugins_asm_print_args[2]; +static const RzCmdDescArg plugins_asm_cpu_print_args[2]; static const RzCmdDescArg plugins_debug_print_args[2]; static const RzCmdDescArg plugins_io_print_args[2]; static const RzCmdDescArg open_args[4]; @@ -13338,6 +13339,9 @@ static const RzCmdDescHelp plugins_lang_print_help = { .args = plugins_lang_print_args, }; +static const RzCmdDescHelp La_help = { + .summary = "List the asm/analysis plugins", +}; static const RzCmdDescDetailEntry plugins_asm_print_Legend_detail_entries[] = { { .text = "a", .arg_str = NULL, .comment = "Analysis plugin" }, { .text = "d", .arg_str = NULL, .comment = "Disassembler plugin" }, @@ -13361,11 +13365,25 @@ static const RzCmdDescArg plugins_asm_print_args[] = { { 0 }, }; static const RzCmdDescHelp plugins_asm_print_help = { - .summary = "List the asm/analysis plugins", + .summary = "List the arch plugins", .details = plugins_asm_print_details, .args = plugins_asm_print_args, }; +static const RzCmdDescArg plugins_asm_cpu_print_args[] = { + { + .name = "architecture", + .type = RZ_CMD_ARG_TYPE_STRING, + .flags = RZ_CMD_ARG_FLAG_LAST, + + }, + { 0 }, +}; +static const RzCmdDescHelp plugins_asm_cpu_print_help = { + .summary = "List the cpus supported by the arch plugin", + .args = plugins_asm_cpu_print_args, +}; + static const RzCmdDescArg plugins_core_print_args[] = { { 0 }, }; @@ -21093,7 +21111,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { rz_warn_if_fail(slash__cd); RzCmdDesc *cmd_search_str_chunk_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/+", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_str_chunk_handler, &cmd_search_str_chunk_help); rz_warn_if_fail(cmd_search_str_chunk_cd); - rz_cmd_desc_set_default_mode(cmd_search_str_chunk_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_a_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/a", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_assemble_handler, &cmd_search_assemble_help, &slash_a_help); rz_warn_if_fail(slash_a_cd); @@ -21155,54 +21172,41 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *cmd_search_hash_block_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/ch", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_block_handler, &cmd_search_hash_block_help); rz_warn_if_fail(cmd_search_hash_block_cd); - rz_cmd_desc_set_default_mode(cmd_search_hash_block_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_hash_entropy_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/ce", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_entropy_handler, &cmd_search_hash_entropy_help); rz_warn_if_fail(cmd_search_hash_entropy_cd); - rz_cmd_desc_set_default_mode(cmd_search_hash_entropy_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_hash_entropy_fractional_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/cef", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hash_entropy_fractional_handler, &cmd_search_hash_entropy_fractional_help); rz_warn_if_fail(cmd_search_hash_entropy_fractional_cd); - rz_cmd_desc_set_default_mode(cmd_search_hash_entropy_fractional_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_cryptographic_material_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_c_cd, "/cm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_cryptographic_material_handler, &cmd_search_cryptographic_material_help); rz_warn_if_fail(cmd_search_cryptographic_material_cd); - rz_cmd_desc_set_default_mode(cmd_search_cryptographic_material_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_deltified_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/d", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_deltified_handler, &cmd_search_deltified_help); rz_warn_if_fail(cmd_search_deltified_cd); - rz_cmd_desc_set_default_mode(cmd_search_deltified_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_file_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/F", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_file_handler, &cmd_search_file_help); rz_warn_if_fail(cmd_search_file_cd); - rz_cmd_desc_set_default_mode(cmd_search_file_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_insn_offset_backwards_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/o", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_insn_offset_backwards_handler, &cmd_search_insn_offset_backwards_help); rz_warn_if_fail(cmd_search_insn_offset_backwards_cd); - rz_cmd_desc_set_default_mode(cmd_search_insn_offset_backwards_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_insn_offset_backwards_fallback_cd = rz_cmd_desc_argv_modes_new(core->rcmd, slash__cd, "/O", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_insn_offset_backwards_fallback_handler, &cmd_search_insn_offset_backwards_fallback_help); rz_warn_if_fail(cmd_search_insn_offset_backwards_fallback_cd); - rz_cmd_desc_set_default_mode(cmd_search_insn_offset_backwards_fallback_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_pattern_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/p", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_pattern_handler, &cmd_search_pattern_help); rz_warn_if_fail(cmd_search_pattern_cd); - rz_cmd_desc_set_default_mode(cmd_search_pattern_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_blocks_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash__cd, "/P", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_blocks_handler, &cmd_search_blocks_help); rz_warn_if_fail(cmd_search_blocks_cd); - rz_cmd_desc_set_default_mode(cmd_search_blocks_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_g_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/g", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_graph_path_handler, &cmd_search_graph_path_help, &slash_g_help); rz_warn_if_fail(slash_g_cd); - rz_cmd_desc_set_default_mode(slash_g_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_graph_path_follow_calls_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_g_cd, "/gg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_search_graph_path_follow_calls_handler, &cmd_search_graph_path_follow_calls_help); rz_warn_if_fail(cmd_search_graph_path_follow_calls_cd); - rz_cmd_desc_set_default_mode(cmd_search_graph_path_follow_calls_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_m_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/m", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_magic_const_handler, &cmd_search_magic_const_help, &slash_m_help); rz_warn_if_fail(slash_m_cd); - rz_cmd_desc_set_default_mode(slash_m_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_magic_bin_headers_cd = rz_cmd_desc_argv_new(core->rcmd, slash_m_cd, "/mb", rz_cmd_search_magic_bin_headers_handler, &cmd_search_magic_bin_headers_help); rz_warn_if_fail(cmd_search_magic_bin_headers_cd); @@ -21228,64 +21232,48 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *slash_R_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/R", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_info_gadget_handler, &cmd_info_gadget_help, &slash_R_help); rz_warn_if_fail(slash_R_cd); - rz_cmd_desc_set_default_mode(slash_R_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/R/", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_gadget_handler, &cmd_search_gadget_help); rz_warn_if_fail(cmd_search_gadget_cd); - rz_cmd_desc_set_default_mode(cmd_search_gadget_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_query_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/Rk", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_query_gadget_handler, &cmd_query_gadget_help); rz_warn_if_fail(cmd_query_gadget_cd); - rz_cmd_desc_set_default_mode(cmd_query_gadget_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_detail_gadget_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_R_cd, "/Rg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_cmd_detail_gadget_handler, &cmd_detail_gadget_help); rz_warn_if_fail(cmd_detail_gadget_cd); - rz_cmd_desc_set_default_mode(cmd_detail_gadget_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_v_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/v", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_handler, &cmd_search_value_help, &slash_v_help); rz_warn_if_fail(slash_v_cd); - rz_cmd_desc_set_default_mode(slash_v_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v1_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v1_handler, &cmd_search_value_alias_v1_help); rz_warn_if_fail(cmd_search_value_alias_v1_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v1_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v2_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v2", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v2_handler, &cmd_search_value_alias_v2_help); rz_warn_if_fail(cmd_search_value_alias_v2_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v2_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v4_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v4", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v4_handler, &cmd_search_value_alias_v4_help); rz_warn_if_fail(cmd_search_value_alias_v4_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v4_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v8_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/v8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v8_handler, &cmd_search_value_alias_v8_help); rz_warn_if_fail(cmd_search_value_alias_v8_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v8_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v1_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V1", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v1_range_handler, &cmd_search_value_alias_v1_range_help); rz_warn_if_fail(cmd_search_value_alias_v1_range_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v1_range_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v2_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V2", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v2_range_handler, &cmd_search_value_alias_v2_range_help); rz_warn_if_fail(cmd_search_value_alias_v2_range_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v2_range_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v4_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V4", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v4_range_handler, &cmd_search_value_alias_v4_range_help); rz_warn_if_fail(cmd_search_value_alias_v4_range_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v4_range_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_value_alias_v8_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_v_cd, "/V8", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_value_alias_v8_range_handler, &cmd_search_value_alias_v8_range_help); rz_warn_if_fail(cmd_search_value_alias_v8_range_cd); - rz_cmd_desc_set_default_mode(cmd_search_value_alias_v8_range_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_x_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/x", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hex_handler, &cmd_search_hex_help, &slash_x_help); rz_warn_if_fail(slash_x_cd); - rz_cmd_desc_set_default_mode(slash_x_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_search_hex_regex_cd = rz_cmd_desc_argv_state_new(core->rcmd, slash_x_cd, "/xr", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_hex_regex_handler, &cmd_search_hex_regex_help); rz_warn_if_fail(cmd_search_hex_regex_cd); - rz_cmd_desc_set_default_mode(cmd_search_hex_regex_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *slash_z_cd = rz_cmd_desc_group_state_new(core->rcmd, slash__cd, "/z", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_search_string_sensitive_handler, &cmd_search_string_sensitive_help, &slash_z_help); rz_warn_if_fail(slash_z_cd); - rz_cmd_desc_set_default_mode(slash_z_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *R_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "R", rz_remote_handler, &remote_help, &R_help); rz_warn_if_fail(R_cd); @@ -21357,7 +21345,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *print_boundaries_prot_cd = rz_cmd_desc_argv_state_new(core->rcmd, cmd_math_cd, "%B", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_print_boundaries_prot_handler, &print_boundaries_prot_help); rz_warn_if_fail(print_boundaries_prot_cd); - rz_cmd_desc_set_default_mode(print_boundaries_prot_cd, RZ_OUTPUT_MODE_TABLE); RzCmdDesc *print_djb2_hash_cd = rz_cmd_desc_argv_new(core->rcmd, cmd_math_cd, "%h", rz_print_djb2_hash_handler, &print_djb2_hash_help); rz_warn_if_fail(print_djb2_hash_cd); @@ -22303,7 +22290,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { rz_warn_if_fail(as_cd); RzCmdDesc *analysis_syscall_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, as_cd, "asl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_analysis_syscall_print_handler, &analysis_syscall_print_help); rz_warn_if_fail(analysis_syscall_print_cd); - rz_cmd_desc_set_default_mode(analysis_syscall_print_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *analysis_syscall_dump_assembly_cd = rz_cmd_desc_argv_new(core->rcmd, as_cd, "asca", rz_analysis_syscall_dump_assembly_handler, &analysis_syscall_dump_assembly_help); rz_warn_if_fail(analysis_syscall_dump_assembly_cd); @@ -22757,7 +22743,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *cmd_debug_descriptor_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dd_cd, "ddl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_descriptor_list_handler, &cmd_debug_descriptor_list_help); rz_warn_if_fail(cmd_debug_descriptor_list_cd); - rz_cmd_desc_set_default_mode(cmd_debug_descriptor_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_debug_descriptor_seek_cd = rz_cmd_desc_argv_new(core->rcmd, dd_cd, "dds", rz_cmd_debug_descriptor_seek_handler, &cmd_debug_descriptor_seek_help); rz_warn_if_fail(cmd_debug_descriptor_seek_cd); @@ -22900,13 +22885,11 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *debug_info_cd = rz_cmd_desc_argv_state_new(core->rcmd, d_cd, "di", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_debug_info_handler, &debug_info_help); rz_warn_if_fail(debug_info_cd); - rz_cmd_desc_set_default_mode(debug_info_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *dk_cd = rz_cmd_desc_group_new(core->rcmd, d_cd, "dk", rz_cmd_debug_signal_handler, &cmd_debug_signal_help, &dk_help); rz_warn_if_fail(dk_cd); RzCmdDesc *cmd_debug_signal_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dk_cd, "dkl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_signal_list_handler, &cmd_debug_signal_list_help); rz_warn_if_fail(cmd_debug_signal_list_cd); - rz_cmd_desc_set_default_mode(cmd_debug_signal_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_debug_signal_name_cd = rz_cmd_desc_argv_new(core->rcmd, dk_cd, "dkn", rz_cmd_debug_signal_name_handler, &cmd_debug_signal_name_help); rz_warn_if_fail(cmd_debug_signal_name_cd); @@ -22921,7 +22904,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { rz_warn_if_fail(dl_cd); RzCmdDesc *cmd_debug_handler_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dl_cd, "dll", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_handler_list_handler, &cmd_debug_handler_list_help); rz_warn_if_fail(cmd_debug_handler_list_cd); - rz_cmd_desc_set_default_mode(cmd_debug_handler_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *dm_cd = rz_cmd_desc_group_state_new(core->rcmd, d_cd, "dm", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_cmd_debug_list_maps_handler, &cmd_debug_list_maps_help, &dm_help); rz_warn_if_fail(dm_cd); @@ -23020,10 +23002,8 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *dp_cd = rz_cmd_desc_group_state_new(core->rcmd, d_cd, "dp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_pid_list_handler, &cmd_debug_pid_list_help, &dp_help); rz_warn_if_fail(dp_cd); - rz_cmd_desc_set_default_mode(dp_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_debug_pid_attachable_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dp_cd, "dpl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_pid_attachable_list_handler, &cmd_debug_pid_attachable_list_help); rz_warn_if_fail(cmd_debug_pid_attachable_list_cd); - rz_cmd_desc_set_default_mode(cmd_debug_pid_attachable_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_debug_pid_attach_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpa", rz_cmd_debug_pid_attach_handler, &cmd_debug_pid_attach_help); rz_warn_if_fail(cmd_debug_pid_attach_cd); @@ -23051,7 +23031,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *cmd_debug_thread_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, dp_cd, "dpT", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_cmd_debug_thread_list_handler, &cmd_debug_thread_list_help); rz_warn_if_fail(cmd_debug_thread_list_cd); - rz_cmd_desc_set_default_mode(cmd_debug_thread_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *cmd_debug_pid_thread_select_cd = rz_cmd_desc_argv_new(core->rcmd, dp_cd, "dpt=", rz_cmd_debug_pid_thread_select_handler, &cmd_debug_pid_thread_select_help); rz_warn_if_fail(cmd_debug_pid_thread_select_cd); @@ -23237,11 +23216,9 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *flag_local_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_dot__cd, "f.l", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_local_list_handler, &flag_local_list_help); rz_warn_if_fail(flag_local_list_cd); - rz_cmd_desc_set_default_mode(flag_local_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_local_list_all_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_dot__cd, "f.l*", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_local_list_all_handler, &flag_local_list_all_help); rz_warn_if_fail(flag_local_list_all_cd); - rz_cmd_desc_set_default_mode(flag_local_list_all_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_remove_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "f-", rz_flag_remove_handler, &flag_remove_help); rz_warn_if_fail(flag_remove_cd); @@ -23260,19 +23237,15 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *flag_graph_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fg", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN, rz_flag_graph_handler, &flag_graph_help); rz_warn_if_fail(flag_graph_cd); - rz_cmd_desc_set_default_mode(flag_graph_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_range_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fi", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_range_handler, &flag_range_help); rz_warn_if_fail(flag_range_cd); - rz_cmd_desc_set_default_mode(flag_range_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_list_handler, &flag_list_help); rz_warn_if_fail(flag_list_cd); - rz_cmd_desc_set_default_mode(flag_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_list_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, f_cd, "fl.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_RIZIN | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_TABLE, rz_flag_list_at_handler, &flag_list_at_help); rz_warn_if_fail(flag_list_at_cd); - rz_cmd_desc_set_default_mode(flag_list_at_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_length_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fL", rz_flag_length_handler, &flag_length_help); rz_warn_if_fail(flag_length_cd); @@ -23291,10 +23264,8 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *fd_cd = rz_cmd_desc_group_state_new(core->rcmd, f_cd, "fd", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_flag_describe_handler, &flag_describe_help, &fd_help); rz_warn_if_fail(fd_cd); - rz_cmd_desc_set_default_mode(fd_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_describe_at_cd = rz_cmd_desc_argv_state_new(core->rcmd, fd_cd, "fd.", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_JSON, rz_flag_describe_at_handler, &flag_describe_at_help); rz_warn_if_fail(flag_describe_at_cd); - rz_cmd_desc_set_default_mode(flag_describe_at_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_describe_closest_cd = rz_cmd_desc_argv_new(core->rcmd, fd_cd, "fdw", rz_flag_describe_closest_handler, &flag_describe_closest_help); rz_warn_if_fail(flag_describe_closest_cd); @@ -23315,7 +23286,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { rz_warn_if_fail(fs_cd); RzCmdDesc *flag_space_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fs_cd, "fsl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON | RZ_OUTPUT_MODE_QUIET, rz_flag_space_list_handler, &flag_space_list_help); rz_warn_if_fail(flag_space_list_cd); - rz_cmd_desc_set_default_mode(flag_space_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_space_remove_cd = rz_cmd_desc_argv_new(core->rcmd, fs_cd, "fs-", rz_flag_space_remove_handler, &flag_space_remove_help); rz_warn_if_fail(flag_space_remove_cd); @@ -23339,13 +23309,11 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *flag_space_stack_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fss_cd, "fssl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_flag_space_stack_list_handler, &flag_space_stack_list_help); rz_warn_if_fail(flag_space_stack_list_cd); - rz_cmd_desc_set_default_mode(flag_space_stack_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *ft_cd = rz_cmd_desc_group_new(core->rcmd, f_cd, "ft", rz_flag_tag_add_handler, &flag_tag_add_help, &ft_help); rz_warn_if_fail(ft_cd); RzCmdDesc *flag_tag_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, ft_cd, "ftl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_LONG | RZ_OUTPUT_MODE_JSON, rz_flag_tag_list_handler, &flag_tag_list_help); rz_warn_if_fail(flag_tag_list_cd); - rz_cmd_desc_set_default_mode(flag_tag_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_tag_search_cd = rz_cmd_desc_argv_new(core->rcmd, ft_cd, "ftn", rz_flag_tag_search_handler, &flag_tag_search_help); rz_warn_if_fail(flag_tag_search_cd); @@ -23363,7 +23331,6 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *flag_zone_list_cd = rz_cmd_desc_argv_state_new(core->rcmd, fz_cd, "fzl", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_flag_zone_list_handler, &flag_zone_list_help); rz_warn_if_fail(flag_zone_list_cd); - rz_cmd_desc_set_default_mode(flag_zone_list_cd, RZ_OUTPUT_MODE_STANDARD); RzCmdDesc *flag_hexdump_cd = rz_cmd_desc_argv_new(core->rcmd, f_cd, "fx", rz_flag_hexdump_handler, &flag_hexdump_help); rz_warn_if_fail(flag_hexdump_cd); @@ -23608,37 +23575,37 @@ RZ_IPI void rzshell_cmddescs_init(RzCore *core) { RzCmdDesc *plugins_unload_cd = rz_cmd_desc_argv_new(core->rcmd, L_cd, "L-", rz_plugins_unload_handler, &plugins_unload_help); rz_warn_if_fail(plugins_unload_cd); - RzCmdDesc *plugins_lang_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ll", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_lang_print_handler, &plugins_lang_print_help); + RzCmdDesc *plugins_lang_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ll", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_lang_print_handler, &plugins_lang_print_help); rz_warn_if_fail(plugins_lang_print_cd); - RzCmdDesc *plugins_asm_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "La", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_asm_print_handler, &plugins_asm_print_help); - rz_warn_if_fail(plugins_asm_print_cd); + RzCmdDesc *La_cd = rz_cmd_desc_group_state_new(core->rcmd, L_cd, "La", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_asm_print_handler, &plugins_asm_print_help, &La_help); + rz_warn_if_fail(La_cd); + RzCmdDesc *plugins_asm_cpu_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, La_cd, "Lac", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_asm_cpu_print_handler, &plugins_asm_cpu_print_help); + rz_warn_if_fail(plugins_asm_cpu_print_cd); - RzCmdDesc *plugins_core_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lc", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_core_print_handler, &plugins_core_print_help); + RzCmdDesc *plugins_core_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lc", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_core_print_handler, &plugins_core_print_help); rz_warn_if_fail(plugins_core_print_cd); - RzCmdDesc *plugins_crypto_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LC", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_crypto_print_handler, &plugins_crypto_print_help); + RzCmdDesc *plugins_crypto_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LC", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_crypto_print_handler, &plugins_crypto_print_help); rz_warn_if_fail(plugins_crypto_print_cd); - RzCmdDesc *plugins_debug_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ld", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_debug_print_handler, &plugins_debug_print_help); + RzCmdDesc *plugins_debug_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Ld", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_debug_print_handler, &plugins_debug_print_help); rz_warn_if_fail(plugins_debug_print_cd); - RzCmdDesc *plugins_hash_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lh", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_hash_print_handler, &plugins_hash_print_help); + RzCmdDesc *plugins_hash_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lh", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_hash_print_handler, &plugins_hash_print_help); rz_warn_if_fail(plugins_hash_print_cd); - RzCmdDesc *plugins_bin_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Li", RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_bin_print_handler, &plugins_bin_print_help); + RzCmdDesc *plugins_bin_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Li", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_bin_print_handler, &plugins_bin_print_help); rz_warn_if_fail(plugins_bin_print_cd); - RzCmdDesc *plugins_io_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lo", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_plugins_io_print_handler, &plugins_io_print_help); + RzCmdDesc *plugins_io_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lo", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_io_print_handler, &plugins_io_print_help); rz_warn_if_fail(plugins_io_print_cd); - rz_cmd_desc_set_default_mode(plugins_io_print_cd, RZ_OUTPUT_MODE_TABLE); - RzCmdDesc *plugins_parser_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lp", RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_parser_print_handler, &plugins_parser_print_help); + RzCmdDesc *plugins_parser_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "Lp", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_parser_print_handler, &plugins_parser_print_help); rz_warn_if_fail(plugins_parser_print_cd); - RzCmdDesc *plugins_demanglers_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LD", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_JSON, rz_plugins_demanglers_print_handler, &plugins_demanglers_print_help); + RzCmdDesc *plugins_demanglers_print_cd = rz_cmd_desc_argv_state_new(core->rcmd, L_cd, "LD", RZ_OUTPUT_MODE_TABLE | RZ_OUTPUT_MODE_QUIET | RZ_OUTPUT_MODE_STANDARD | RZ_OUTPUT_MODE_JSON, rz_plugins_demanglers_print_handler, &plugins_demanglers_print_help); rz_warn_if_fail(plugins_demanglers_print_cd); - rz_cmd_desc_set_default_mode(plugins_demanglers_print_cd, RZ_OUTPUT_MODE_TABLE); RzCmdDesc *o_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "o", rz_open_handler, &open_help, &o_help); rz_warn_if_fail(o_cd); diff --git a/librz/core/cmd_descs/cmd_descs.h b/librz/core/cmd_descs/cmd_descs.h index 2ecc28d89c..a6d019e930 100644 --- a/librz/core/cmd_descs/cmd_descs.h +++ b/librz/core/cmd_descs/cmd_descs.h @@ -1750,6 +1750,8 @@ RZ_IPI RzCmdStatus rz_plugins_unload_handler(RzCore *core, int argc, const char RZ_IPI RzCmdStatus rz_plugins_lang_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state); // "La" RZ_IPI RzCmdStatus rz_plugins_asm_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state); +// "Lac" +RZ_IPI RzCmdStatus rz_plugins_asm_cpu_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state); // "Lc" RZ_IPI RzCmdStatus rz_plugins_core_print_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state); // "LC" diff --git a/librz/core/cmd_descs/cmd_descs_generate.py b/librz/core/cmd_descs/cmd_descs_generate.py index 787261aaf0..d55684bf51 100755 --- a/librz/core/cmd_descs/cmd_descs_generate.py +++ b/librz/core/cmd_descs/cmd_descs_generate.py @@ -471,6 +471,13 @@ class CmdDesc: print("Specify arguments for command %s" % (self.name,)) sys.exit(1) + if self.modes and "RZ_OUTPUT_MODE_STANDARD" in self.modes and self.default_mode: + print( + "You cannot define `default_mode` if `RZ_OUTPUT_MODE_STANDARD` mode is set on command `%s`" + % (self.name,) + ) + sys.exit(1) + def get_handler_cname(self): if self.type not in [ CD_TYPE_ARGV, diff --git a/librz/core/cmd_descs/cmd_flag.yaml b/librz/core/cmd_descs/cmd_flag.yaml index f58049c4df..036cee73c8 100644 --- a/librz/core/cmd_descs/cmd_flag.yaml +++ b/librz/core/cmd_descs/cmd_flag.yaml @@ -52,7 +52,6 @@ commands: cname: flag_local_list summary: List the local flags for the function type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -62,7 +61,6 @@ commands: cname: flag_local_list_all summary: List the local flags for all functions type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -107,7 +105,6 @@ commands: cname: flag_graph summary: Show the flag graph type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_RIZIN @@ -119,7 +116,6 @@ commands: cname: flag_range summary: Show the flags in the block or custom range type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_RIZIN @@ -134,7 +130,6 @@ commands: cname: flag_list summary: List all flags type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_RIZIN @@ -146,7 +141,6 @@ commands: cname: flag_list_at summary: List all flags at the current offset type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_RIZIN @@ -203,7 +197,6 @@ commands: cname: flag_describe summary: Describe flag + delta for the current offset type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_TABLE @@ -213,7 +206,6 @@ commands: cname: flag_describe_at summary: Describe flags for the current offset type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_TABLE @@ -269,7 +261,6 @@ commands: cname: flag_space_list summary: Display flagspaces type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -312,7 +303,6 @@ commands: cname: flag_space_stack_list summary: Display flagspace stack type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -332,7 +322,6 @@ commands: cname: flag_tag_list summary: List all flag tags type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_LONG @@ -371,7 +360,6 @@ commands: cname: flag_zone_list summary: List all flag zones type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON diff --git a/librz/core/cmd_descs/cmd_math.yaml b/librz/core/cmd_descs/cmd_math.yaml index 221890591c..042d6f9fa3 100644 --- a/librz/core/cmd_descs/cmd_math.yaml +++ b/librz/core/cmd_descs/cmd_math.yaml @@ -85,7 +85,6 @@ commands: those search modes. cname: print_boundaries_prot type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_TABLE modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON diff --git a/librz/core/cmd_descs/cmd_plugins.yaml b/librz/core/cmd_descs/cmd_plugins.yaml index fd9f07e853..46d3a5f44f 100644 --- a/librz/core/cmd_descs/cmd_plugins.yaml +++ b/librz/core/cmd_descs/cmd_plugins.yaml @@ -21,39 +21,57 @@ commands: type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: - - RZ_OUTPUT_MODE_STANDARD - - RZ_OUTPUT_MODE_JSON - - name: La - cname: plugins_asm_print - summary: List the asm/analysis plugins - type: RZ_CMD_DESC_TYPE_ARGV_STATE - args: - - name: features - type: RZ_CMD_ARG_TYPE_STRING - optional: true - modes: + - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - details: - - name: Legend - entries: - - text: "a" - comment: "Analysis plugin" - - text: "d" - comment: "Disassembler plugin" - - text: "A" - comment: "Assembler plugin" - - text: "e" - comment: "ESIL Support" - - text: "I" - comment: "RzIL Support" + - name: La + summary: List the asm/analysis plugins + subcommands: + - name: La + cname: plugins_asm_print + summary: List the arch plugins + type: RZ_CMD_DESC_TYPE_ARGV_STATE + args: + - name: features + type: RZ_CMD_ARG_TYPE_STRING + optional: true + modes: + - RZ_OUTPUT_MODE_TABLE + - RZ_OUTPUT_MODE_QUIET + - RZ_OUTPUT_MODE_STANDARD + - RZ_OUTPUT_MODE_JSON + details: + - name: Legend + entries: + - text: "a" + comment: "Analysis plugin" + - text: "d" + comment: "Disassembler plugin" + - text: "A" + comment: "Assembler plugin" + - text: "e" + comment: "ESIL Support" + - text: "I" + comment: "RzIL Support" + - name: Lac + cname: plugins_asm_cpu_print + summary: List the cpus supported by the arch plugin + type: RZ_CMD_DESC_TYPE_ARGV_STATE + args: + - name: architecture + type: RZ_CMD_ARG_TYPE_STRING + modes: + - RZ_OUTPUT_MODE_STANDARD + - RZ_OUTPUT_MODE_JSON - name: Lc cname: plugins_core_print summary: List the core plugins type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: + - RZ_OUTPUT_MODE_TABLE + - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - name: LC @@ -62,6 +80,8 @@ commands: type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: + - RZ_OUTPUT_MODE_TABLE + - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - name: Ld @@ -73,6 +93,7 @@ commands: type: RZ_CMD_ARG_TYPE_STRING optional: true modes: + - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -82,6 +103,7 @@ commands: type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: + - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -91,6 +113,7 @@ commands: type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: + - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -102,10 +125,10 @@ commands: - name: path type: RZ_CMD_ARG_TYPE_FILE optional: true - default_mode: RZ_OUTPUT_MODE_TABLE modes: - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET + - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - name: Lp cname: plugins_parser_print @@ -113,6 +136,8 @@ commands: type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] modes: + - RZ_OUTPUT_MODE_TABLE + - RZ_OUTPUT_MODE_QUIET - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON - name: LD @@ -120,8 +145,8 @@ commands: summary: List the demanglers plugins (alias for iDl) type: RZ_CMD_DESC_TYPE_ARGV_STATE args: [] - default_mode: RZ_OUTPUT_MODE_TABLE modes: - RZ_OUTPUT_MODE_TABLE - RZ_OUTPUT_MODE_QUIET + - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON \ No newline at end of file diff --git a/librz/core/cmd_descs/cmd_search.yaml b/librz/core/cmd_descs/cmd_search.yaml index b87b18aeae..a9f78aea99 100644 --- a/librz/core/cmd_descs/cmd_search.yaml +++ b/librz/core/cmd_descs/cmd_search.yaml @@ -6,7 +6,6 @@ commands: - name: "/+" summary: Construct the string with chunks. cname: cmd_search_str_chunk - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -228,7 +227,6 @@ commands: summary: Search for blocks that have the same hash. cname: cmd_search_hash_block type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -257,7 +255,6 @@ commands: summary: "Search for blocks above an entropy level." cname: cmd_search_hash_entropy type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -281,7 +278,6 @@ commands: summary: "Search for blocks above an fractional entropy level." cname: cmd_search_hash_entropy_fractional type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -305,7 +301,6 @@ commands: summary: Search cryptographic material. cname: cmd_search_cryptographic_material type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -350,7 +345,6 @@ commands: - name: "/d" summary: Search for a deltified sequence of bytes. cname: cmd_search_deltified - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -363,7 +357,6 @@ commands: summary: Search the content of a file. cname: cmd_search_file type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -390,7 +383,6 @@ commands: - name: "/o" summary: Show offset of n instructions backward. cname: cmd_search_insn_offset_backwards - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -401,7 +393,6 @@ commands: - name: "/O" summary: Same as /o, but with a different fallback if analysis cannot be used. cname: cmd_search_insn_offset_backwards_fallback - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -413,7 +404,6 @@ commands: summary: Search for pattern of given size. cname: cmd_search_pattern type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -426,7 +416,6 @@ commands: summary: Search similar blocks. cname: cmd_search_blocks type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -443,7 +432,6 @@ commands: summary: Search for all graph paths A to B (does not follow calls). cname: cmd_search_graph_path type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -456,7 +444,6 @@ commands: summary: Search for all graph paths A to B (follows calls, see `search.count` and `analysis.depth`). cname: cmd_search_graph_path_follow_calls type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -472,7 +459,6 @@ commands: summary: Magic constants search. cname: cmd_search_magic_const type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -534,7 +520,6 @@ commands: cname: cmd_info_gadget summary: List ROP Gadgets type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -548,7 +533,6 @@ commands: cname: cmd_search_gadget summary: List ROP Gadgets [regular expression] type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -562,7 +546,6 @@ commands: cname: cmd_query_gadget summary: Query ROP Gadgets by providing constraints type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -577,7 +560,6 @@ commands: cname: cmd_detail_gadget summary: Gadget detail info type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -592,7 +574,6 @@ commands: summary: Value search. cname: cmd_search_value type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -640,7 +621,6 @@ commands: summary: Value search - Alias for /v 1 . cname: cmd_search_value_alias_v1 type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -653,7 +633,6 @@ commands: summary: Value search - Alias for /v 2a . cname: cmd_search_value_alias_v2 type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -666,7 +645,6 @@ commands: summary: Value search - Alias for /v 4a . cname: cmd_search_value_alias_v4 type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -679,7 +657,6 @@ commands: summary: Value search - Alias for /v 8a . cname: cmd_search_value_alias_v8 type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -692,7 +669,6 @@ commands: summary: Value search - Alias for /v 1 [,]. cname: cmd_search_value_alias_v1_range type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -707,7 +683,6 @@ commands: summary: Value search - Alias for /v 2a [,]. cname: cmd_search_value_alias_v2_range type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -722,7 +697,6 @@ commands: summary: Value search - Alias for /v 4a [,]. cname: cmd_search_value_alias_v4_range type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -737,7 +711,6 @@ commands: summary: Value search - Alias for /v 8a [,]. cname: cmd_search_value_alias_v8_range type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -756,7 +729,6 @@ commands: summary: Raw hexadecimal search. cname: cmd_search_hex type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -780,7 +752,6 @@ commands: summary: Regex bytes search. cname: cmd_search_hex_regex type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON @@ -858,7 +829,6 @@ commands: summary: String search. cname: cmd_search_string_sensitive type: RZ_CMD_DESC_TYPE_ARGV_STATE - default_mode: RZ_OUTPUT_MODE_STANDARD modes: - RZ_OUTPUT_MODE_STANDARD - RZ_OUTPUT_MODE_JSON diff --git a/librz/core/core.c b/librz/core/core.c index 2e77b6b711..636316256f 100644 --- a/librz/core/core.c +++ b/librz/core/core.c @@ -2160,24 +2160,36 @@ RZ_API RzTable *rz_core_table(RzCore *core) { return table; } -RZ_API RzCmdStatus rz_core_core_plugin_print(RzCorePlugin *cp, RzCmdStateOutput *state, const char *license) { +static RzCmdStatus core_core_plugin_print(RzCorePlugin *cp, RzCmdStateOutput *state) { + const char *name = rz_str_get(cp->name); + const char *desc = rz_str_get(cp->desc); + const char *author = rz_str_get(cp->author); + const char *version = rz_str_get(cp->version); + const char *license = rz_str_get(cp->license); + PJ *pj = state->d.pj; switch (state->mode) { + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "sssss", name, license, author, version, desc); + break; case RZ_OUTPUT_MODE_JSON: { pj_o(pj); - pj_ks(pj, "name", cp->name); - pj_ks(pj, "description", cp->desc); - pj_ks(pj, "author", cp->author); - pj_ks(pj, "version", cp->version); + pj_ks(pj, "name", name); + pj_ks(pj, "description", desc); + pj_ks(pj, "author", author); + pj_ks(pj, "version", version); pj_ks(pj, "license", license); pj_end(pj); break; } case RZ_OUTPUT_MODE_STANDARD: { rz_cons_printf("%s: %s (Made by %s, v%s, %s)\n", - cp->name, cp->desc, cp->author, cp->version, license); + name, desc, author, version, license); break; } + case RZ_OUTPUT_MODE_QUIET: + rz_cons_println(name); + break; default: { rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; @@ -2194,12 +2206,10 @@ RZ_API RzCmdStatus rz_core_core_plugins_print(RzCore *core, RzCmdStateOutput *st return RZ_CMD_STATUS_ERROR; } rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "sssss", "name", "license", "author", "version", "description"); rz_iterator_foreach(iter, val) { RzCorePlugin *cp = *val; - const char *license = cp->license - ? cp->license - : "???"; - status = rz_core_core_plugin_print(cp, state, license); + status = core_core_plugin_print(cp, state); if (status != RZ_CMD_STATUS_OK) { return status; } diff --git a/librz/core/cparser.c b/librz/core/cparser.c index 95f597cd2e..fd05d92dc5 100644 --- a/librz/core/cparser.c +++ b/librz/core/cparser.c @@ -4,23 +4,30 @@ #include RZ_API RzCmdStatus rz_core_parser_plugin_print(RzParsePlugin *plugin, RzCmdStateOutput *state) { + const char *name = rz_str_get(plugin->name); + const char *desc = rz_str_get(plugin->desc); + PJ *pj = state->d.pj; switch (state->mode) { - case RZ_OUTPUT_MODE_JSON: { + case RZ_OUTPUT_MODE_QUIET: + rz_cons_println(name); + break; + case RZ_OUTPUT_MODE_JSON: pj_o(pj); - pj_ks(pj, "name", plugin->name); + pj_ks(pj, "name", name); + pj_ks(pj, "desc", desc); pj_end(pj); break; - } - case RZ_OUTPUT_MODE_STANDARD: { - rz_cons_printf("%s\n", plugin->name); + case RZ_OUTPUT_MODE_STANDARD: + rz_cons_printf("%-15s %s\n", name, desc); break; - } - default: { + case RZ_OUTPUT_MODE_TABLE: + rz_table_add_rowf(state->d.t, "ss", name, desc); + break; + default: rz_warn_if_reached(); return RZ_CMD_STATUS_NONEXISTINGCMD; } - } return RZ_CMD_STATUS_OK; } @@ -31,6 +38,7 @@ RZ_API RzCmdStatus rz_core_parser_plugins_print(RzParse *parser, RzCmdStateOutpu return RZ_CMD_STATUS_ERROR; } rz_cmd_state_output_array_start(state); + rz_cmd_state_output_set_columnsf(state, "ss", "name", "description"); rz_list_foreach (parser->parsers, iter, plugin) { rz_core_parser_plugin_print(plugin, state); } diff --git a/librz/crypto/p/crypto_aes.c b/librz/crypto/p/crypto_aes.c index c5a87719fe..ef37d1e19c 100644 --- a/librz/crypto/p/crypto_aes.c +++ b/librz/crypto/p/crypto_aes.c @@ -160,7 +160,7 @@ static bool aes_ecb_fini(RzCrypto *cry) { RzCryptoPlugin rz_crypto_plugin_aes = { .name = "aes-ecb", - .author = "Nettle project (algorithm implementation), pancake (plugin)", + .author = "Nettle project,pancake", .license = "LGPL3", .set_key = aes_set_key, .get_key_size = aes_get_key_size, diff --git a/librz/include/rz_core.h b/librz/include/rz_core.h index 947309a6a0..5f495ebb35 100644 --- a/librz/include/rz_core.h +++ b/librz/include/rz_core.h @@ -846,7 +846,8 @@ RZ_API RzList /**/ *rz_core_asm_hit_list_new(void); RZ_API void rz_core_asm_hit_free(void *_hit); RZ_API void rz_core_set_asm_configs(RzCore *core, char *arch, ut32 bits, int segoff); RZ_API char *rz_core_asm_search(RzCore *core, const char *input); -RZ_API RzCmdStatus rz_core_asm_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_NULLABLE const char *arch, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *flags); +RZ_API RzCmdStatus rz_core_asm_plugins_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *flags); +RZ_API RzCmdStatus rz_core_asm_cpu_plugin_print(RZ_NONNULL RZ_BORROW RzCore *core, RZ_OUT RzCmdStateOutput *state, RZ_NULLABLE const char *arch_name); RZ_API RzCmdStatus rz_core_cpu_descs_print(RZ_NONNULL RzCore *core, RZ_NONNULL const char *plugin); RZ_API RzList /**/ *rz_core_asm_strsearch(RzCore *core, const char *input, ut64 from, ut64 to, int maxhits, int regexp, int everyByte, int mode); RZ_API RzList /**/ *rz_core_asm_bwdisassemble(RzCore *core, ut64 addr, int n, int len); diff --git a/librz/main/rz-asm.c b/librz/main/rz-asm.c index 587cf9c7a5..655a9167f2 100644 --- a/librz/main/rz-asm.c +++ b/librz/main/rz-asm.c @@ -658,7 +658,11 @@ RZ_API int rz_main_rz_asm(int argc, const char *argv[]) { core->analysis = as->analysis; RzCmdStateOutput state = { 0 }; rz_cmd_state_output_init(&state, as->json ? RZ_OUTPUT_MODE_JSON : RZ_OUTPUT_MODE_STANDARD); - rz_core_asm_plugins_print(core, opt.argv[opt.ind], &state, NULL); + if (opt.argv[opt.ind]) { + rz_core_asm_cpu_plugin_print(core, &state, opt.argv[opt.ind]); + } else { + rz_core_asm_plugins_print(core, &state, NULL); + } rz_cmd_state_output_print(&state); rz_cmd_state_output_fini(&state); rz_cons_flush(); diff --git a/test/db/archos/linux-x64/cmd_list b/test/db/archos/linux-x64/cmd_list index 8793b42ca5..21d7a9d0cb 100644 --- a/test/db/archos/linux-x64/cmd_list +++ b/test/db/archos/linux-x64/cmd_list @@ -31,14 +31,14 @@ Ldj~{[8].name} Ldj~{[8].license} EOF EXPECT=<] # List the asm/analysis plugins -| La [] # List the asm/analysis plugins -| Laj [] # List the asm/analysis plugins (JSON mode) -| Laq [] # List the asm/analysis plugins (quiet mode) +Usage: La[jqt] [] # List the arch plugins +| La [] # List the arch plugins +| Laj [] # List the arch plugins (JSON mode) +| Laq [] # List the arch plugins (quiet mode) +| Lat [] # List the arch plugins (table mode) Legend: | a # Analysis plugin diff --git a/test/db/cmd/cmd_list b/test/db/cmd/cmd_list index bab2f4bcec..9bc10562e3 100644 --- a/test/db/cmd/cmd_list +++ b/test/db/cmd/cmd_list @@ -1,7 +1,45 @@ NAME=Print the parser plugins FILE== -CMDS=Lp +CMDS=<