Browse Source

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>
tags/v0.4.0-rc2
David Brownell 14 years ago
parent
commit
1dd5277ba3
3 changed files with 81 additions and 57 deletions
  1. +31
    -23
      src/helper/command.c
  2. +37
    -26
      src/helper/ioutil.c
  3. +13
    -8
      src/helper/log.c

+ 31
- 23
src/helper/command.c View File

@@ -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);
enum command_mode mode;

if (argc > 1)
{
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);
}

/* sleep command sleeps for <n> miliseconds
/* sleep command sleeps for <n> milliseconds
* this is useful in target startup scripts
*/
COMMAND_HANDLER(handle_sleep_command)
@@ -1263,19 +1264,22 @@ static const struct command_registration command_subcommand_handlers[] = {
{
.name = "mode",
.mode = COMMAND_ANY,
.jim_handler = &jim_command_mode,
.usage = "[<name> ...]",
.jim_handler = jim_command_mode,
.usage = "[command_name ...]",
.help = "Returns the command modes allowed by a command:"
"'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",
.mode = COMMAND_ANY,
.jim_handler = &jim_command_type,
.usage = "<name> ...",
.jim_handler = jim_command_type,
.usage = "command_name [...]",
.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
};
@@ -1283,39 +1287,43 @@ static const struct command_registration command_subcommand_handlers[] = {
static const struct command_registration command_builtin_handlers[] = {
{
.name = "add_help_text",
.handler = &handle_help_add_command,
.handler = handle_help_add_command,
.mode = COMMAND_ANY,
.help = "add new command help text",
.usage = "<command> [...] <help_text>]",
.help = "Add new command help text; "
"Command can be multiple tokens.",
.usage = "command_name helptext_string",
},
{
.name = "add_usage_text",
.handler = &handle_help_add_command,
.handler = handle_help_add_command,
.mode = COMMAND_ANY,
.help = "add new command usage text",
.usage = "<command> [...] <usage_text>]",
.help = "Add new command usage text; "
"command can be multiple tokens.",
.usage = "command_name usage_string",
},
{
.name = "sleep",
.handler = &handle_sleep_command,
.handler = handle_sleep_command,
.mode = COMMAND_ANY,
.help = "sleep for n milliseconds. "
"\"busy\" will busy wait",
.usage = "<n> [busy]",
.help = "Sleep for specified number of milliseconds. "
"\"busy\" will busy wait instead (avoid this).",
.usage = "milliseconds ['busy']",
},
{
.name = "help",
.handler = &handle_help_command,
.handler = handle_help_command,
.mode = COMMAND_ANY,
.help = "show full command help",
.usage = "[<command> ...]",
.help = "Show full command help; "
"command can be multiple tokens.",
.usage = "[command_name]",
},
{
.name = "usage",
.handler = &handle_help_command,
.handler = handle_help_command,
.mode = COMMAND_ANY,
.help = "show basic command usage",
.usage = "[<command> ...]",
.help = "Show basic command usage; "
"command can be multiple tokens.",
.usage = "[command_name]",
},
{
.name = "command",


+ 37
- 26
src/helper/ioutil.c View File

@@ -191,6 +191,7 @@ COMMAND_HANDLER(handle_append_command)

int retval = ERROR_FAIL;
FILE *config_file = NULL;

config_file = fopen(CMD_ARGV[0], "a");
if (config_file != NULL)
{
@@ -199,7 +200,8 @@ COMMAND_HANDLER(handle_append_command)
unsigned 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;
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))
{
retval = ERROR_OK;
}
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[] = {
{
.name = "cat",
.handler = &handle_cat_command,
.handler = handle_cat_command,
.mode = COMMAND_ANY,
.help = "display file content",
.usage= "<file_name>",
.help = "display text file content",
.usage= "file_name",
},
{
.name = "trunc",
.handler = &handle_trunc_command,
.handler = handle_trunc_command,
.mode = COMMAND_ANY,
.help = "truncate a file 0 size",
.usage= "<file_name>",
.help = "truncate a file to zero length",
.usage= "file_name",
},
{
.name = "cp",
.handler = &handle_cp_command,
.handler = handle_cp_command,
.mode = COMMAND_ANY,
.help = "copy a file",
.usage = "<src> <dst>",
.usage = "src_file_name dst_file_name",
},
{
.name = "append_file",
.handler = &handle_append_command,
.handler = handle_append_command,
.mode = COMMAND_ANY,
.help = "append a variable number of strings to a file",
.usage= "<file_name> [<string> ...]",
.usage= "file_name [string ...]",
},
{
.name = "meminfo",
.handler = &handle_meminfo_command,
.handler = handle_meminfo_command,
.mode = COMMAND_ANY,
.help = "display available ram memory",
.help = "display free heap space",
},
{
.name = "rm",
.mode = COMMAND_ANY,
.handler = &handle_rm_command,
.help = "remove a file",
.usage = "<file>",
.handler = handle_rm_command,
.help = "remove a directory or 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
{
.name = "peek",
.mode = COMMAND_ANY,
.jim_handler = &zylinjtag_Jim_Command_peek,
.jim_handler = zylinjtag_Jim_Command_peek,
.help = "peek at a memory address",
.usage = "<addr>",
.usage = "address",
},
{
.name = "poke",
.mode = COMMAND_ANY,
.jim_handler = &zylinjtag_Jim_Command_poke,
.jim_handler = zylinjtag_Jim_Command_poke,
.help = "poke at a memory address",
.usage = "<addr> <value>",
.usage = "address value",
},
{
.name = "ls",
.mode = COMMAND_ANY,
.jim_handler = &zylinjtag_Jim_Command_ls,
.jim_handler = zylinjtag_Jim_Command_ls,
.help = "show a listing of files",
.usage = "<dir>",
.usage = "dirname",
},
{
.name = "mac",
.mode = COMMAND_ANY,
.jim_handler = &zylinjtag_Jim_Command_mac,
.jim_handler = zylinjtag_Jim_Command_mac,
.help = "show MAC address",
},
{
.name = "ip",
.jim_handler = &zylinjtag_Jim_Command_ip,
.jim_handler = zylinjtag_Jim_Command_ip,
.mode = COMMAND_ANY,
.help = "show IP address",
},


+ 13
- 8
src/helper/log.c View File

@@ -286,13 +286,16 @@ COMMAND_HANDLER(handle_debug_level_command)

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
* otherwise the pipe will get full and cause issues with gdb */
/* if we are enabling debug info then we need to write to a
* log file otherwise the pipe will get full and cause issues
* with gdb
*/
FILE* file = fopen("openocd.log", "w");
if (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[] = {
{
.name = "log_output",
.handler = &handle_log_output_command,
.handler = handle_log_output_command,
.mode = COMMAND_ANY,
.help = "redirect logging to a file (default: stderr)",
.usage = "<file_name>",
.usage = "file_name",
},
{
.name = "debug_level",
.handler = &handle_debug_level_command,
.handler = handle_debug_level_command,
.mode = COMMAND_ANY,
.help = "sets the verbosity level of debugging output",
.usage = "<level:0-3>",
.help = "Sets the verbosity level of debugging output. "
"0 shows errors only; 1 adds warnings; "
"2 (default) adds other info; 3 adds debugging.",
.usage = "number",
},
COMMAND_REGISTRATION_DONE
};


Loading…
Cancel
Save