diff options
author | Wengier <wengierwu@yahoo.com> | 2021-07-09 08:37:29 +0300 |
---|---|---|
committer | Wengier <wengierwu@yahoo.com> | 2021-07-09 09:11:50 +0300 |
commit | 5e252e60a13dbe3ab9319b718fd4a3298e391691 (patch) | |
tree | e71c92ba94a03f71b09184e518bafc711fa5be99 | |
parent | 1061b8ef7d8ad4e264281dccb981305f2fe1cda7 (diff) |
Allow HELP command to show command helpww/help
-rw-r--r-- | .github/workflows/pvs-studio.yml | 2 | ||||
-rw-r--r-- | src/shell/shell.cpp | 1 | ||||
-rw-r--r-- | src/shell/shell_cmds.cpp | 31 |
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){ |