summaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authorZachary T Welch <zw@superlucidity.net>2009-11-23 12:16:27 -0800
committerZachary T Welch <zw@superlucidity.net>2009-11-24 21:37:37 -0800
commit6b066cd17073d868b88414556d1ca3f0580449ec (patch)
treeac40c09313cd3969852dd23c85b45927e35b1f24 /src/helper
parent8f5ff3ddcf0ab11b0ec6fc9215144154fb0519f9 (diff)
downloadopenocd_libswd-6b066cd17073d868b88414556d1ca3f0580449ec.tar.gz
openocd_libswd-6b066cd17073d868b88414556d1ca3f0580449ec.tar.bz2
openocd_libswd-6b066cd17073d868b88414556d1ca3f0580449ec.tar.xz
openocd_libswd-6b066cd17073d868b88414556d1ca3f0580449ec.zip
allow scripts to update usage information
The add_usage_text command uses the same C handler, which was updated to support its new polymorphic role. This patch updates the two script commands that needed this support: 'find' and 'script'.
Diffstat (limited to 'src/helper')
-rw-r--r--src/helper/command.c36
-rw-r--r--src/helper/startup.tcl7
2 files changed, 36 insertions, 7 deletions
diff --git a/src/helper/command.c b/src/helper/command.c
index 3cb36ea2..1263a931 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -951,8 +951,9 @@ int help_add_command(struct command_context *cmd_ctx, struct command *parent,
return ERROR_FAIL;
}
LOG_DEBUG("added '%s' help text", cmd_name);
+ return ERROR_OK;
}
- else
+ if (help_text)
{
bool replaced = false;
if (nc->help)
@@ -961,12 +962,25 @@ int help_add_command(struct command_context *cmd_ctx, struct command *parent,
replaced = true;
}
nc->help = strdup(help_text);
-
if (replaced)
LOG_INFO("replaced existing '%s' help", cmd_name);
else
LOG_DEBUG("added '%s' help text", cmd_name);
}
+ if (usage)
+ {
+ bool replaced = false;
+ if (nc->usage)
+ {
+ free((void *)nc->usage);
+ replaced = true;
+ }
+ nc->usage = strdup(usage);
+ if (replaced)
+ LOG_INFO("replaced existing '%s' usage", cmd_name);
+ else
+ LOG_DEBUG("added '%s' usage text", cmd_name);
+ }
return ERROR_OK;
}
@@ -979,7 +993,14 @@ COMMAND_HANDLER(handle_help_add_command)
}
// save help text and remove it from argument list
- const char *help_text = CMD_ARGV[--CMD_ARGC];
+ const char *str = CMD_ARGV[--CMD_ARGC];
+ const char *help = !strcmp(CMD_NAME, "add_help_text") ? str : NULL;
+ const char *usage = !strcmp(CMD_NAME, "add_usage_text") ? str : NULL;
+ if (!help && !usage)
+ {
+ LOG_ERROR("command name '%s' is unknown", CMD_NAME);
+ return ERROR_INVALID_ARGUMENTS;
+ }
// likewise for the leaf command name
const char *cmd_name = CMD_ARGV[--CMD_ARGC];
@@ -991,7 +1012,7 @@ COMMAND_HANDLER(handle_help_add_command)
if (ERROR_OK != retval)
return retval;
}
- return help_add_command(CMD_CTX, c, cmd_name, help_text, NULL);
+ return help_add_command(CMD_CTX, c, cmd_name, help, usage);
}
/* sleep command sleeps for <n> miliseconds
@@ -1039,6 +1060,13 @@ static const struct command_registration command_builtin_handlers[] = {
.usage = "<command> [...] <help_text>]",
},
{
+ .name = "add_usage_text",
+ .handler = &handle_help_add_command,
+ .mode = COMMAND_ANY,
+ .help = "add new command usage text",
+ .usage = "<command> [...] <usage_text>]",
+ },
+ {
.name = "sleep",
.handler = &handle_sleep_command,
.mode = COMMAND_ANY,
diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index ede8cdb9..5969cfec 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -59,14 +59,15 @@ proc find {filename} {
# make sure error message matches original input string
return -code error "Can't find $filename"
}
-add_help_text find "<file> - print full path to file according to OpenOCD search rules"
+add_usage_text find "<file>"
+add_help_text find "print full path to file according to OpenOCD search rules"
# Run script
proc script {filename} {
source [find $filename]
}
-
-add_help_text script "<filename> - filename of OpenOCD script (tcl) to run"
+add_help_text script "filename of OpenOCD script (tcl) to run"
+add_usage_text script "<file>"
#########