Normalize the output of L subcommands (#5077)

This commit is contained in:
Giovanni 2025-04-08 16:46:27 +08:00 committed by GitHub
parent d04dc5f586
commit dbe651db33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 1006 additions and 659 deletions

View file

@ -83,6 +83,6 @@ RzAsmPlugin rz_asm_plugin_avr = {
"ATmega88,"
"ATxmega128a4u,"
"ATTiny48,"
"ATTiny88,",
"ATTiny88",
.get_cpu_desc = avr_cpu_descriptions,
};

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -5,41 +5,41 @@
#include <rz_util/rz_iterator.h>
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;
}

View file

@ -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);

View file

@ -3,56 +3,62 @@
#include <rz_core.h>
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;
}

View file

@ -3,30 +3,33 @@
#include <rz_core.h>
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;
}

View file

@ -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) {

View file

@ -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) {

View file

@ -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;

View file

@ -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) {

View file

@ -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

View file

@ -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 <pid>
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

View file

@ -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);

View file

@ -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"

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 <value>.
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 <value>.
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 <value>.
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 <value>.
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 [<min_value>,<max_value>].
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 [<min_value>,<max_value>].
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 [<min_value>,<max_value>].
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 [<min_value>,<max_value>].
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

View file

@ -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;
}

View file

@ -4,23 +4,30 @@
#include <rz_core.h>
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);
}

View file

@ -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,

View file

@ -846,7 +846,8 @@ RZ_API RzList /*<RzCoreAsmHit *>*/ *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 /*<RzCoreAsmHit *>*/ *rz_core_asm_strsearch(RzCore *core, const char *input, ut64 from, ut64 to, int maxhits, int regexp, int everyByte, int mode);
RZ_API RzList /*<RzCoreAsmHit *>*/ *rz_core_asm_bwdisassemble(RzCore *core, ut64 addr, int n, int len);

View file

@ -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();

View file

@ -31,14 +31,14 @@ Ldj~{[8].name}
Ldj~{[8].license}
EOF
EXPECT=<<EOF
{"arch":"bf","name":"bf","license":"LGPL3"}
{"arch":"x86","name":"bochs","license":"LGPL3"}
{"arch":"x86,arm","name":"dmp","license":"LGPL3"}
{"arch":"x86,arm,sh,mips,avr,lm32,v850,ba2,tricore","name":"gdb","license":"LGPL3"}
{"arch":"any","name":"io","license":"MIT"}
{"arch":"x86","name":"native","license":"LGPL3"}
{"arch":"any","name":"null","license":"MIT"}
{"arch":"x86,arm","name":"qnx","license":"LGPL3"}
{"arch":"bf","name":"bf","bits":"32 64","license":"LGPL3","version":""}
{"arch":"x86","name":"bochs","bits":"16 32 64","license":"LGPL3","version":""}
{"arch":"x86,arm","name":"dmp","bits":"32 64","license":"LGPL3","version":""}
{"arch":"x86,arm,sh,mips,avr,lm32,v850,ba2,tricore","name":"gdb","bits":"16 32 64","license":"LGPL3","version":""}
{"arch":"any","name":"io","bits":"32 64","license":"MIT","version":""}
{"arch":"x86","name":"native","bits":"32 64","license":"LGPL3","version":"","selected":true}
{"arch":"any","name":"null","bits":"32 64","license":"MIT","version":""}
{"arch":"x86,arm","name":"qnx","bits":"32 ","license":"LGPL3","version":""}
winkd
LGPL3
EOF

View file

@ -174,10 +174,11 @@ CMDS=<<EOF
La??
EOF
EXPECT=<<EOF
Usage: La[jq] [<features>] # List the asm/analysis plugins
| La [<features>] # List the asm/analysis plugins
| Laj [<features>] # List the asm/analysis plugins (JSON mode)
| Laq [<features>] # List the asm/analysis plugins (quiet mode)
Usage: La[jqt] [<features>] # List the arch plugins
| La [<features>] # List the arch plugins
| Laj [<features>] # List the arch plugins (JSON mode)
| Laq [<features>] # List the arch plugins (quiet mode)
| Lat [<features>] # List the arch plugins (table mode)
Legend:
| a # Analysis plugin

File diff suppressed because one or more lines are too long

View file

@ -289,7 +289,7 @@ ED____ serpent-ecb LGPL-3 NicsTr
ED____ sm4-ecb LGPL-3 0xSh4dy
ED____ aes-cbc LGPL-3 rakholiyajenish.07
E_____ rol LGPL-3 pancake
ED____ aes-ecb LGPL3 Nettle project (algorithm implementation), pancake (plugin)
ED____ aes-ecb LGPL3 Nettle project,pancake
ED____ des-ecb LGPL-3 deroad
ED____ blowfish LGPL3 kishorbhat
__ed__ base91 LGPL-3 rakholiyajenish.07