Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dosbox-staging/dosbox-staging.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWengier <wengierwu@yahoo.com>2021-07-09 08:37:29 +0300
committerWengier <wengierwu@yahoo.com>2021-07-09 09:11:50 +0300
commit5e252e60a13dbe3ab9319b718fd4a3298e391691 (patch)
treee71c92ba94a03f71b09184e518bafc711fa5be99
parent1061b8ef7d8ad4e264281dccb981305f2fe1cda7 (diff)
Allow HELP command to show command helpww/help
-rw-r--r--.github/workflows/pvs-studio.yml2
-rw-r--r--src/shell/shell.cpp1
-rw-r--r--src/shell/shell_cmds.cpp31
3 files changed, 27 insertions, 7 deletions
diff --git a/.github/workflows/pvs-studio.yml b/.github/workflows/pvs-studio.yml
index 0ac04c5bc..3b88a1748 100644
--- a/.github/workflows/pvs-studio.yml
+++ b/.github/workflows/pvs-studio.yml
@@ -107,7 +107,7 @@ jobs:
- name: Summarize report
env:
- MAX_BUGS: 351
+ MAX_BUGS: 352
run: |
echo "Full report is included in build Artifacts"
echo
diff --git a/src/shell/shell.cpp b/src/shell/shell.cpp
index f3f6d0f20..b45844dec 100644
--- a/src/shell/shell.cpp
+++ b/src/shell/shell.cpp
@@ -694,6 +694,7 @@ void SHELL_Init() {
MSG_Add("SHELL_CMD_ECHO_HELP","Display messages and enable/disable command echoing.\n");
MSG_Add("SHELL_CMD_EXIT_HELP","Exit from the shell.\n");
MSG_Add("SHELL_CMD_HELP_HELP","Show help.\n");
+ MSG_Add("SHELL_CMD_HELP_HELP_LONG","HELP [command]\n");
MSG_Add("SHELL_CMD_MKDIR_HELP","Make Directory.\n");
MSG_Add("SHELL_CMD_MKDIR_HELP_LONG","MKDIR [drive:][path]\n"
"MD [drive:][path]\n");
diff --git a/src/shell/shell_cmds.cpp b/src/shell/shell_cmds.cpp
index de7b033ff..bd9a57611 100644
--- a/src/shell/shell_cmds.cpp
+++ b/src/shell/shell_cmds.cpp
@@ -59,7 +59,6 @@ static SHELL_Cmd cmd_list[] = {
{ "ERASE", 1, &DOS_Shell::CMD_DELETE, "SHELL_CMD_DELETE_HELP" },
{ "EXIT", 0, &DOS_Shell::CMD_EXIT, "SHELL_CMD_EXIT_HELP" },
{ "GOTO", 1, &DOS_Shell::CMD_GOTO, "SHELL_CMD_GOTO_HELP" },
- { "HELP", 1, &DOS_Shell::CMD_HELP, "SHELL_CMD_HELP_HELP" },
{ "IF", 1, &DOS_Shell::CMD_IF, "SHELL_CMD_IF_HELP" },
{ "LH", 1, &DOS_Shell::CMD_LOADHIGH, "SHELL_CMD_LOADHIGH_HELP" },
{ "LOADHIGH", 1, &DOS_Shell::CMD_LOADHIGH, "SHELL_CMD_LOADHIGH_HELP" },
@@ -240,16 +239,36 @@ void DOS_Shell::CMD_HELP(char * args){
HELP("HELP");
bool optall=ScanCMDBool(args,"ALL");
/* Print the help */
- if (!optall) WriteOut(MSG_Get("SHELL_CMD_HELP"));
+ if (!optall && !*args) WriteOut(MSG_Get("SHELL_CMD_HELP"));
+ upcase(args);
Bit32u cmd_index=0,write_count=0;
+ bool show = false;
while (cmd_list[cmd_index].name) {
- if (optall || !cmd_list[cmd_index].flags) {
- WriteOut("<\033[34;1m%-8s\033[0m> %s",cmd_list[cmd_index].name,MSG_Get(cmd_list[cmd_index].help));
- if (!(++write_count % 24))
- CMD_PAUSE(empty_string);
+ if (optall || (*args && !strcmp(args, cmd_list[cmd_index].name)) || (!*args && !cmd_list[cmd_index].flags)) {
+ if (*args && !strcmp(args, cmd_list[cmd_index].name) && !optall) {
+ std::string cmd = args;
+ if (cmd == "CD") cmd = "CHDIR";
+ else if (cmd == "DEL" || cmd == "ERASE") cmd = "DELETE";
+ else if (cmd == "LH") cmd = "LOADHIGH";
+ else if (cmd == "MD") cmd = "MKDIR";
+ else if (cmd == "RD") cmd = "RMDIR";
+ else if (cmd == "REN") cmd = "RENAME";
+ WriteOut("%s\n",MSG_Get(cmd_list[cmd_index].help));
+ const char* long_m = MSG_Get(("SHELL_CMD_" + cmd + "_HELP_LONG").c_str());
+ if (strcmp("Message not Found!\n",long_m)) WriteOut(long_m);
+ else WriteOut("%s\n", cmd.c_str());
+ show = true;
+ break;
+ } else {
+ WriteOut("<\033[34;1m%-8s\033[0m> %s",cmd_list[cmd_index].name,MSG_Get(cmd_list[cmd_index].help));
+ if (!(++write_count % 24))
+ CMD_PAUSE(empty_string);
+ }
}
cmd_index++;
}
+ char p[2] = {0};
+ if (!optall && *args && !show) CMD_HELP(p);
}
void DOS_Shell::CMD_RENAME(char * args){