src/helper: usage/help updates
Make "usage" messages use the same EBNF as the User's Guide; no angle brackets. Improve and correct various helptexts. Don't use "&function"; a function's name is its address. Fix some whitespace glitches, shrink a few overlong lines. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
parent
1c5c57ec8e
commit
1dd5277ba3
|
@ -1087,6 +1087,7 @@ static int jim_command_mode(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
||||||
{
|
{
|
||||||
struct command_context *cmd_ctx = current_command_context(interp);
|
struct command_context *cmd_ctx = current_command_context(interp);
|
||||||
enum command_mode mode;
|
enum command_mode mode;
|
||||||
|
|
||||||
if (argc > 1)
|
if (argc > 1)
|
||||||
{
|
{
|
||||||
struct command *c = cmd_ctx->commands;
|
struct command *c = cmd_ctx->commands;
|
||||||
|
@ -1223,7 +1224,7 @@ COMMAND_HANDLER(handle_help_add_command)
|
||||||
return help_add_command(CMD_CTX, c, cmd_name, help, usage);
|
return help_add_command(CMD_CTX, c, cmd_name, help, usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sleep command sleeps for <n> miliseconds
|
/* sleep command sleeps for <n> milliseconds
|
||||||
* this is useful in target startup scripts
|
* this is useful in target startup scripts
|
||||||
*/
|
*/
|
||||||
COMMAND_HANDLER(handle_sleep_command)
|
COMMAND_HANDLER(handle_sleep_command)
|
||||||
|
@ -1263,19 +1264,22 @@ static const struct command_registration command_subcommand_handlers[] = {
|
||||||
{
|
{
|
||||||
.name = "mode",
|
.name = "mode",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &jim_command_mode,
|
.jim_handler = jim_command_mode,
|
||||||
.usage = "[<name> ...]",
|
.usage = "[command_name ...]",
|
||||||
.help = "Returns the command modes allowed by a command:"
|
.help = "Returns the command modes allowed by a command:"
|
||||||
"'any', 'config', or 'exec'. If no command is"
|
"'any', 'config', or 'exec'. If no command is"
|
||||||
"specified, returns the current command mode.",
|
"specified, returns the current command mode. "
|
||||||
|
"Returns 'unknown' if an unknown command is given. "
|
||||||
|
"Command can be multiple tokens.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "type",
|
.name = "type",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &jim_command_type,
|
.jim_handler = jim_command_type,
|
||||||
.usage = "<name> ...",
|
.usage = "command_name [...]",
|
||||||
.help = "Returns the type of built-in command:"
|
.help = "Returns the type of built-in command:"
|
||||||
"'native', 'simple', 'group', or 'unknown'",
|
"'native', 'simple', 'group', or 'unknown'. "
|
||||||
|
"Command can be multiple tokens.",
|
||||||
},
|
},
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
};
|
};
|
||||||
|
@ -1283,39 +1287,43 @@ static const struct command_registration command_subcommand_handlers[] = {
|
||||||
static const struct command_registration command_builtin_handlers[] = {
|
static const struct command_registration command_builtin_handlers[] = {
|
||||||
{
|
{
|
||||||
.name = "add_help_text",
|
.name = "add_help_text",
|
||||||
.handler = &handle_help_add_command,
|
.handler = handle_help_add_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "add new command help text",
|
.help = "Add new command help text; "
|
||||||
.usage = "<command> [...] <help_text>]",
|
"Command can be multiple tokens.",
|
||||||
|
.usage = "command_name helptext_string",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "add_usage_text",
|
.name = "add_usage_text",
|
||||||
.handler = &handle_help_add_command,
|
.handler = handle_help_add_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "add new command usage text",
|
.help = "Add new command usage text; "
|
||||||
.usage = "<command> [...] <usage_text>]",
|
"command can be multiple tokens.",
|
||||||
|
.usage = "command_name usage_string",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "sleep",
|
.name = "sleep",
|
||||||
.handler = &handle_sleep_command,
|
.handler = handle_sleep_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "sleep for n milliseconds. "
|
.help = "Sleep for specified number of milliseconds. "
|
||||||
"\"busy\" will busy wait",
|
"\"busy\" will busy wait instead (avoid this).",
|
||||||
.usage = "<n> [busy]",
|
.usage = "milliseconds ['busy']",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "help",
|
.name = "help",
|
||||||
.handler = &handle_help_command,
|
.handler = handle_help_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "show full command help",
|
.help = "Show full command help; "
|
||||||
.usage = "[<command> ...]",
|
"command can be multiple tokens.",
|
||||||
|
.usage = "[command_name]",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "usage",
|
.name = "usage",
|
||||||
.handler = &handle_help_command,
|
.handler = handle_help_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "show basic command usage",
|
.help = "Show basic command usage; "
|
||||||
.usage = "[<command> ...]",
|
"command can be multiple tokens.",
|
||||||
|
.usage = "[command_name]",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "command",
|
.name = "command",
|
||||||
|
|
|
@ -191,6 +191,7 @@ COMMAND_HANDLER(handle_append_command)
|
||||||
|
|
||||||
int retval = ERROR_FAIL;
|
int retval = ERROR_FAIL;
|
||||||
FILE *config_file = NULL;
|
FILE *config_file = NULL;
|
||||||
|
|
||||||
config_file = fopen(CMD_ARGV[0], "a");
|
config_file = fopen(CMD_ARGV[0], "a");
|
||||||
if (config_file != NULL)
|
if (config_file != NULL)
|
||||||
{
|
{
|
||||||
|
@ -199,7 +200,8 @@ COMMAND_HANDLER(handle_append_command)
|
||||||
unsigned i;
|
unsigned i;
|
||||||
for (i = 1; i < CMD_ARGC; i++)
|
for (i = 1; i < CMD_ARGC; i++)
|
||||||
{
|
{
|
||||||
if (fwrite(CMD_ARGV[i], 1, strlen(CMD_ARGV[i]), config_file) != strlen(CMD_ARGV[i]))
|
if (fwrite(CMD_ARGV[i], 1, strlen(CMD_ARGV[i]),
|
||||||
|
config_file) != strlen(CMD_ARGV[i]))
|
||||||
break;
|
break;
|
||||||
if (i != CMD_ARGC - 1)
|
if (i != CMD_ARGC - 1)
|
||||||
{
|
{
|
||||||
|
@ -208,9 +210,8 @@ COMMAND_HANDLER(handle_append_command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((i == CMD_ARGC) && (fwrite("\n", 1, 1, config_file) == 1))
|
if ((i == CMD_ARGC) && (fwrite("\n", 1, 1, config_file) == 1))
|
||||||
{
|
|
||||||
retval = ERROR_OK;
|
retval = ERROR_OK;
|
||||||
}
|
|
||||||
fclose(config_file);
|
fclose(config_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,76 +620,86 @@ static int zylinjtag_Jim_Command_mac(Jim_Interp *interp, int argc,
|
||||||
static const struct command_registration ioutil_command_handlers[] = {
|
static const struct command_registration ioutil_command_handlers[] = {
|
||||||
{
|
{
|
||||||
.name = "cat",
|
.name = "cat",
|
||||||
.handler = &handle_cat_command,
|
.handler = handle_cat_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "display file content",
|
.help = "display text file content",
|
||||||
.usage= "<file_name>",
|
.usage= "file_name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "trunc",
|
.name = "trunc",
|
||||||
.handler = &handle_trunc_command,
|
.handler = handle_trunc_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "truncate a file 0 size",
|
.help = "truncate a file to zero length",
|
||||||
.usage= "<file_name>",
|
.usage= "file_name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "cp",
|
.name = "cp",
|
||||||
.handler = &handle_cp_command,
|
.handler = handle_cp_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "copy a file",
|
.help = "copy a file",
|
||||||
.usage = "<src> <dst>",
|
.usage = "src_file_name dst_file_name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "append_file",
|
.name = "append_file",
|
||||||
.handler = &handle_append_command,
|
.handler = handle_append_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "append a variable number of strings to a file",
|
.help = "append a variable number of strings to a file",
|
||||||
.usage= "<file_name> [<string> ...]",
|
.usage= "file_name [string ...]",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "meminfo",
|
.name = "meminfo",
|
||||||
.handler = &handle_meminfo_command,
|
.handler = handle_meminfo_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "display available ram memory",
|
.help = "display free heap space",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "rm",
|
.name = "rm",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.handler = &handle_rm_command,
|
.handler = handle_rm_command,
|
||||||
.help = "remove a file",
|
.help = "remove a directory or file",
|
||||||
.usage = "<file>",
|
.usage = "file_name",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* REVISIT shouldn't most, or all, these zylinjtag_*()
|
||||||
|
* entries be #ifdef ZY1000? If not, why so they have
|
||||||
|
* those names?
|
||||||
|
*
|
||||||
|
* Peek and poke are security holes -- they manipulate
|
||||||
|
* server-internal addresses.
|
||||||
|
*/
|
||||||
|
|
||||||
// jim handlers
|
// jim handlers
|
||||||
{
|
{
|
||||||
.name = "peek",
|
.name = "peek",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &zylinjtag_Jim_Command_peek,
|
.jim_handler = zylinjtag_Jim_Command_peek,
|
||||||
.help = "peek at a memory address",
|
.help = "peek at a memory address",
|
||||||
.usage = "<addr>",
|
.usage = "address",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "poke",
|
.name = "poke",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &zylinjtag_Jim_Command_poke,
|
.jim_handler = zylinjtag_Jim_Command_poke,
|
||||||
.help = "poke at a memory address",
|
.help = "poke at a memory address",
|
||||||
.usage = "<addr> <value>",
|
.usage = "address value",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "ls",
|
.name = "ls",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &zylinjtag_Jim_Command_ls,
|
.jim_handler = zylinjtag_Jim_Command_ls,
|
||||||
.help = "show a listing of files",
|
.help = "show a listing of files",
|
||||||
.usage = "<dir>",
|
.usage = "dirname",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "mac",
|
.name = "mac",
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.jim_handler = &zylinjtag_Jim_Command_mac,
|
.jim_handler = zylinjtag_Jim_Command_mac,
|
||||||
.help = "show MAC address",
|
.help = "show MAC address",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "ip",
|
.name = "ip",
|
||||||
.jim_handler = &zylinjtag_Jim_Command_ip,
|
.jim_handler = zylinjtag_Jim_Command_ip,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "show IP address",
|
.help = "show IP address",
|
||||||
},
|
},
|
||||||
|
|
|
@ -286,13 +286,16 @@ COMMAND_HANDLER(handle_debug_level_command)
|
||||||
|
|
||||||
if (debug_level >= LOG_LVL_DEBUG && server_use_pipes == 1)
|
if (debug_level >= LOG_LVL_DEBUG && server_use_pipes == 1)
|
||||||
{
|
{
|
||||||
/* if we are enabling debug info then we need to write to a log file
|
/* if we are enabling debug info then we need to write to a
|
||||||
* otherwise the pipe will get full and cause issues with gdb */
|
* log file otherwise the pipe will get full and cause issues
|
||||||
|
* with gdb
|
||||||
|
*/
|
||||||
FILE* file = fopen("openocd.log", "w");
|
FILE* file = fopen("openocd.log", "w");
|
||||||
if (file)
|
if (file)
|
||||||
{
|
{
|
||||||
log_output = file;
|
log_output = file;
|
||||||
LOG_WARNING("enabling log output as we are using pipes");
|
LOG_WARNING("enabling logfile output because "
|
||||||
|
"we are using pipes to talk to GDB.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,17 +322,19 @@ COMMAND_HANDLER(handle_log_output_command)
|
||||||
static struct command_registration log_command_handlers[] = {
|
static struct command_registration log_command_handlers[] = {
|
||||||
{
|
{
|
||||||
.name = "log_output",
|
.name = "log_output",
|
||||||
.handler = &handle_log_output_command,
|
.handler = handle_log_output_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "redirect logging to a file (default: stderr)",
|
.help = "redirect logging to a file (default: stderr)",
|
||||||
.usage = "<file_name>",
|
.usage = "file_name",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "debug_level",
|
.name = "debug_level",
|
||||||
.handler = &handle_debug_level_command,
|
.handler = handle_debug_level_command,
|
||||||
.mode = COMMAND_ANY,
|
.mode = COMMAND_ANY,
|
||||||
.help = "sets the verbosity level of debugging output",
|
.help = "Sets the verbosity level of debugging output. "
|
||||||
.usage = "<level:0-3>",
|
"0 shows errors only; 1 adds warnings; "
|
||||||
|
"2 (default) adds other info; 3 adds debugging.",
|
||||||
|
.usage = "number",
|
||||||
},
|
},
|
||||||
COMMAND_REGISTRATION_DONE
|
COMMAND_REGISTRATION_DONE
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue