Convert q commands to newshell (#525) ##commands

This commit is contained in:
Aswin C 2021-02-10 19:00:21 +05:30 committed by GitHub
parent bc4fe462c7
commit 8bb0f24636
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 181 additions and 9 deletions

View file

@ -928,8 +928,73 @@ static const RzCmdDescHelp project_open_no_bin_io_help = {
.args = project_open_no_bin_io_args,
};
static const RzCmdDescHelp q_help = {
.summary = "Quit rizin",
};
static const RzCmdDescArg cmd_quit_args[] = {
{ 0 },
};
static const RzCmdDescHelp cmd_quit_help = {
.summary = "Quit program with a return value",
.summary = "quit rizin",
.args = cmd_quit_args,
};
static const RzCmdDescArg cmd_force_quit_args[] = {
{ 0 },
};
static const RzCmdDescHelp cmd_force_quit_help = {
.summary = "Force quit rizin",
.args = cmd_force_quit_args,
};
static const RzCmdDescArg cmd_force_quit_without_history_args[] = {
{ 0 },
};
static const RzCmdDescHelp cmd_force_quit_without_history_help = {
.summary = "force quit rizin without saving history",
.args = cmd_force_quit_without_history_args,
};
static const RzCmdDescHelp quit_with_preference_help = {
.summary = "Quit rizin and choose to kill the process and save projects",
.options = "<yn><yn>",
};
static const RzCmdDescHelp qy_help = {
.summary = "Quit rizin by killing the process and and choose to save the projects or not",
};
static const RzCmdDescArg quit_kill_save_args[] = {
{ 0 },
};
static const RzCmdDescHelp quit_kill_save_help = {
.summary = "Quit rizin by killing the process and saving the project",
.args = quit_kill_save_args,
};
static const RzCmdDescArg quit_kill_nosave_args[] = {
{ 0 },
};
static const RzCmdDescHelp quit_kill_nosave_help = {
.summary = "Quit rizin by killing the process and not saving the project",
.args = quit_kill_nosave_args,
};
static const RzCmdDescHelp qn_help = {
.summary = "Quit rizin by not killing the process and choose to save the projects or not",
};
static const RzCmdDescArg quit_nokill_nosave_args[] = {
{ 0 },
};
static const RzCmdDescHelp quit_nokill_nosave_help = {
.summary = "Quit rizin by not killing the process and not saving the project",
.args = quit_nokill_nosave_args,
};
static const RzCmdDescArg quit_nokill_save_args[] = {
{ 0 },
};
static const RzCmdDescHelp quit_nokill_save_help = {
.summary = "Quit rizin by not killing the process and saving the project",
.args = quit_nokill_save_args,
};
static const RzCmdDescHelp cmd_resize_help = {
@ -2473,8 +2538,31 @@ RZ_IPI void newshell_cmddescs_init(RzCore *core) {
RzCmdDesc *project_open_no_bin_io_cd = rz_cmd_desc_argv_new(core->rcmd, P_cd, "Poo", rz_project_open_no_bin_io_handler, &project_open_no_bin_io_help);
rz_warn_if_fail(project_open_no_bin_io_cd);
RzCmdDesc *cmd_quit_cd = rz_cmd_desc_oldinput_new(core->rcmd, root_cd, "q", rz_cmd_quit, &cmd_quit_help);
rz_warn_if_fail(cmd_quit_cd);
RzCmdDesc *q_cd = rz_cmd_desc_group_new(core->rcmd, root_cd, "q", rz_cmd_quit_handler, &cmd_quit_help, &q_help);
rz_warn_if_fail(q_cd);
RzCmdDesc *cmd_force_quit_cd = rz_cmd_desc_argv_new(core->rcmd, q_cd, "q!", rz_cmd_force_quit_handler, &cmd_force_quit_help);
rz_warn_if_fail(cmd_force_quit_cd);
RzCmdDesc *cmd_force_quit_without_history_cd = rz_cmd_desc_argv_new(core->rcmd, q_cd, "q!!", rz_cmd_force_quit_without_history_handler, &cmd_force_quit_without_history_help);
rz_warn_if_fail(cmd_force_quit_without_history_cd);
RzCmdDesc *quit_with_preference_cd = rz_cmd_desc_inner_new(core->rcmd, q_cd, "q", &quit_with_preference_help);
rz_warn_if_fail(quit_with_preference_cd);
RzCmdDesc *qy_cd = rz_cmd_desc_group_new(core->rcmd, quit_with_preference_cd, "qy", NULL, NULL, &qy_help);
rz_warn_if_fail(qy_cd);
RzCmdDesc *quit_kill_save_cd = rz_cmd_desc_argv_new(core->rcmd, qy_cd, "qyy", rz_quit_kill_save_handler, &quit_kill_save_help);
rz_warn_if_fail(quit_kill_save_cd);
RzCmdDesc *quit_kill_nosave_cd = rz_cmd_desc_argv_new(core->rcmd, qy_cd, "qyn", rz_quit_kill_nosave_handler, &quit_kill_nosave_help);
rz_warn_if_fail(quit_kill_nosave_cd);
RzCmdDesc *qn_cd = rz_cmd_desc_group_new(core->rcmd, quit_with_preference_cd, "qn", NULL, NULL, &qn_help);
rz_warn_if_fail(qn_cd);
RzCmdDesc *quit_nokill_nosave_cd = rz_cmd_desc_argv_new(core->rcmd, qn_cd, "qnn", rz_quit_nokill_nosave_handler, &quit_nokill_nosave_help);
rz_warn_if_fail(quit_nokill_nosave_cd);
RzCmdDesc *quit_nokill_save_cd = rz_cmd_desc_argv_new(core->rcmd, qn_cd, "qny", rz_quit_nokill_save_handler, &quit_nokill_save_help);
rz_warn_if_fail(quit_nokill_save_cd);
RzCmdDesc *cmd_resize_cd = rz_cmd_desc_oldinput_new(core->rcmd, root_cd, "r", rz_cmd_resize, &cmd_resize_help);
rz_warn_if_fail(cmd_resize_cd);

View file

@ -79,7 +79,13 @@ RZ_IPI int rz_cmd_print(void *data, const char *input);
RZ_IPI RzCmdStatus rz_project_save_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_project_open_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_project_open_no_bin_io_handler(RzCore *core, int argc, const char **argv);
RZ_IPI int rz_cmd_quit(void *data, const char *input);
RZ_IPI RzCmdStatus rz_cmd_quit_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_cmd_force_quit_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_cmd_force_quit_without_history_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_quit_kill_save_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_quit_kill_nosave_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_quit_nokill_nosave_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_quit_nokill_save_handler(RzCore *core, int argc, const char **argv);
RZ_IPI int rz_cmd_resize(void *data, const char *input);
RZ_IPI RzCmdStatus rz_seek_handler(RzCore *core, int argc, const char **argv);
RZ_IPI RzCmdStatus rz_seek_padded_handler(RzCore *core, int argc, const char **argv);

View file

@ -600,9 +600,48 @@
- name: project.rzdb
type: RZ_CMD_ARG_TYPE_FILE
- name: q
cname: cmd_quit
summary: Quit program with a return value
type: RZ_CMD_DESC_TYPE_OLDINPUT
summary: Quit rizin
subcommands:
- name: "q"
cname : cmd_quit
summary: quit rizin
args: []
- name: "q!"
cname: cmd_force_quit
summary: Force quit rizin
args: []
- name: "q!!"
cname: cmd_force_quit_without_history
summary: force quit rizin without saving history
args: []
- name: "q"
cname: quit_with_preference
summary: Quit rizin and choose to kill the process and save projects
options: "<yn><yn>"
type: RZ_CMD_DESC_TYPE_INNER
subcommands:
- name: qy
summary: Quit rizin by killing the process and and choose to save the projects or not
subcommands:
- name: qyy
cname: quit_kill_save
summary: Quit rizin by killing the process and saving the project
args: []
- name: qyn
cname: quit_kill_nosave
summary: Quit rizin by killing the process and not saving the project
args: []
- name: qn
summary: Quit rizin by not killing the process and choose to save the projects or not
subcommands:
- name: qnn
cname: quit_nokill_nosave
summary: Quit rizin by not killing the process and not saving the project
args: []
- name: qny
cname: quit_nokill_save
summary: Quit rizin by not killing the process and saving the project
args: []
- name: r
cname: cmd_resize
summary: Resize file

View file

@ -2,6 +2,11 @@
#include "rz_core.h"
#define RZ_QUIT_VALUE_KILL 5
#define RZ_QUIT_VALUE_NOKILL 1
#define RZ_QUIT_VALUE_SAVE 10
#define RZ_QUIT_VALUE_NOSAVE 2
static const char *help_msg_q[] = {
"Usage:", "q[!][!] [retval]", "",
"q", "", "quit program",
@ -15,6 +20,32 @@ static const char *help_msg_q[] = {
NULL
};
RZ_IPI RzCmdStatus rz_cmd_quit_handler(RzCore *core, int argc, const char **argv) {
core->num->value = 0LL;
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI RzCmdStatus rz_quit_kill_save_handler(RzCore *core, int argc, const char **argv) {
core->num->value = RZ_QUIT_VALUE_KILL;
core->num->value += RZ_QUIT_VALUE_SAVE;
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI RzCmdStatus rz_quit_kill_nosave_handler(RzCore *core, int argc, const char **argv) {
core->num->value = RZ_QUIT_VALUE_KILL;
core->num->value += RZ_QUIT_VALUE_NOSAVE;
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI RzCmdStatus rz_quit_nokill_nosave_handler(RzCore *core, int argc, const char **argv) {
core->num->value = RZ_QUIT_VALUE_NOKILL;
core->num->value += RZ_QUIT_VALUE_NOSAVE;
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI RzCmdStatus rz_quit_nokill_save_handler(RzCore *core, int argc, const char **argv) {
core->num->value = RZ_QUIT_VALUE_NOKILL;
core->num->value += RZ_QUIT_VALUE_SAVE;
return RZ_CMD_STATUS_EXIT;
}
static int cmd_Quit(void *data, const char *input) {
RzCore *core = (RzCore *)data;
if (input[0] == '!') {
@ -32,6 +63,16 @@ static int cmd_Quit(void *data, const char *input) {
return -2;
}
RZ_IPI RzCmdStatus rz_cmd_force_quit_handler(RzCore *core, int argc, const char **argv) {
cmd_Quit(core, argv[0] + 1);
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI RzCmdStatus rz_cmd_force_quit_without_history_handler(RzCore *core, int argc, const char **argv) {
cmd_Quit(core, argv[0] + 1);
return RZ_CMD_STATUS_EXIT;
}
RZ_IPI int rz_cmd_quit(void *data, const char *input) {
RzCore *core = (RzCore *)data;
if (input)
@ -65,8 +106,6 @@ RZ_IPI int rz_cmd_quit(void *data, const char *input) {
} else if (input[1] == 'n') {
core->num->value += 2;
}
//exit (*input?rz_num_math (core->num, input+1):0);
//if (core->http_up) return false; // cancel quit when http is running
return -2;
}
return false;