Convert q commands to newshell (#525) ##commands
This commit is contained in:
parent
bc4fe462c7
commit
8bb0f24636
4 changed files with 181 additions and 9 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue