}
}
-void CmdsParse(const command_t Commands[], const char *Cmd)
+void CmdsLS(const command_t Commands[])
+{
+ if (Commands[0].Name == NULL) return;
+ int i = 0;
+ while (Commands[i].Name)
+ {
+ if (!offline || Commands[i].Offline)
+ PrintAndLog("%-16s", Commands[i].Name);
+ ++i;
+ }
+}
+
+int CmdsParse(const command_t Commands[], const char *Cmd)
{
if(strcmp( Cmd, "XX_internal_command_dump_XX") == 0)
{// Help dump children
dumpCommandsRecursive(Commands, 0);
- return;
+ return 0;
}
if(strcmp( Cmd, "XX_internal_command_dump_markdown_XX") == 0)
{// Markdown help dump children
dumpCommandsRecursive(Commands, 1);
- return;
+ return 0;
}
char cmd_name[32];
int len = 0;
if (Commands[i].Name) {
while (Cmd[len] == ' ')
++len;
- Commands[i].Parse(Cmd + len);
+ return Commands[i].Parse(Cmd + len);
} else {
// show help for selected hierarchy or if command not recognised
CmdsHelp(Commands);
}
+
+ return 0;
}
char pparent[512] = {0};
// First, dump all single commands, which are not a container for
// other commands
if (markdown) {
- printf("command|offline|description\n");
- printf("-------|-------|-----------\n");
+ printf("|%-*s|%-*s|%s\n",w_cmd,"command",w_off,"offline","description");
+ printf("|%-*s|%-*s|%s\n",w_cmd,"-------",w_off,"-------","-----------");
} else {
printf("%-*s|%-*s|%s\n",w_cmd,"command",w_off,"offline","description");
printf("%-*s|%-*s|%s\n",w_cmd,"-------",w_off,"-------","-----------");
if ( cmds[i].Offline) cmd_offline = "Y";
if (markdown)
- printf("|`%s%s`|%s|`%s`|\n", parent, cmds[i].Name,cmd_offline, cmds[i].Help);
+ printf("|`%s%-*s`|%-*s|`%s`\n", parent, w_cmd-(int)strlen(parent)-2, cmds[i].Name, w_off, cmd_offline, cmds[i].Help);
else
printf("%s%-*s|%-*s|%s\n", parent, w_cmd-(int)strlen(parent), cmds[i].Name, w_off, cmd_offline, cmds[i].Help);
++i;