help is now implemented in startup.tcl/help
git-svn-id: svn://svn.berlios.de/openocd/trunk@797 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
76dec044c0
commit
173a43ff15
|
@ -42,8 +42,6 @@
|
||||||
|
|
||||||
int fast_and_dangerous = 0;
|
int fast_and_dangerous = 0;
|
||||||
|
|
||||||
void command_print_help_line(command_context_t* context, struct command_s *command, int indent);
|
|
||||||
|
|
||||||
int handle_sleep_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_sleep_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
int handle_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
int handle_fast_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_fast_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
|
@ -69,7 +67,6 @@ command_t* register_command(command_context_t *context, command_t *parent, char
|
||||||
c->mode = mode;
|
c->mode = mode;
|
||||||
if (!help)
|
if (!help)
|
||||||
help="";
|
help="";
|
||||||
c->help = strdup(help);
|
|
||||||
c->next = NULL;
|
c->next = NULL;
|
||||||
|
|
||||||
/* place command in tree */
|
/* place command in tree */
|
||||||
|
@ -115,7 +112,7 @@ command_t* register_command(command_context_t *context, command_t *parent, char
|
||||||
Jim_ListAppendElement(interp, cmd_list, Jim_NewStringObj(interp, c->name, -1));
|
Jim_ListAppendElement(interp, cmd_list, Jim_NewStringObj(interp, c->name, -1));
|
||||||
|
|
||||||
Jim_ListAppendElement(interp, cmd_entry, cmd_list);
|
Jim_ListAppendElement(interp, cmd_entry, cmd_list);
|
||||||
Jim_ListAppendElement(interp, cmd_entry, Jim_NewStringObj(interp, c->help, -1));
|
Jim_ListAppendElement(interp, cmd_entry, Jim_NewStringObj(interp, help, -1));
|
||||||
Jim_ListAppendElement(interp, helptext, cmd_entry);
|
Jim_ListAppendElement(interp, helptext, cmd_entry);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
@ -138,8 +135,6 @@ int unregister_all_commands(command_context_t *context)
|
||||||
c->children = c->children->next;
|
c->children = c->children->next;
|
||||||
free(c2->name);
|
free(c2->name);
|
||||||
c2->name = NULL;
|
c2->name = NULL;
|
||||||
free(c2->help);
|
|
||||||
c2->help = NULL;
|
|
||||||
free(c2);
|
free(c2);
|
||||||
c2 = NULL;
|
c2 = NULL;
|
||||||
}
|
}
|
||||||
|
@ -148,8 +143,6 @@ int unregister_all_commands(command_context_t *context)
|
||||||
|
|
||||||
free(c->name);
|
free(c->name);
|
||||||
c->name = NULL;
|
c->name = NULL;
|
||||||
free(c->help);
|
|
||||||
c->help = NULL;
|
|
||||||
free(c);
|
free(c);
|
||||||
c = NULL;
|
c = NULL;
|
||||||
}
|
}
|
||||||
|
@ -185,16 +178,12 @@ int unregister_command(command_context_t *context, char *name)
|
||||||
for (c2 = c->children; c2; c2 = c2->next)
|
for (c2 = c->children; c2; c2 = c2->next)
|
||||||
{
|
{
|
||||||
free(c2->name);
|
free(c2->name);
|
||||||
if (c2->help)
|
|
||||||
free(c2->help);
|
|
||||||
free(c2);
|
free(c2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* delete command */
|
/* delete command */
|
||||||
free(c->name);
|
free(c->name);
|
||||||
if (c->help)
|
|
||||||
free(c->help);
|
|
||||||
free(c);
|
free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,8 +356,7 @@ int find_and_run_command(command_context_t *context, command_t *commands, char *
|
||||||
int retval = c->handler(context, c->name, words + start_word + 1, num_words - start_word - 1);
|
int retval = c->handler(context, c->name, words + start_word + 1, num_words - start_word - 1);
|
||||||
if (retval == ERROR_COMMAND_SYNTAX_ERROR)
|
if (retval == ERROR_COMMAND_SYNTAX_ERROR)
|
||||||
{
|
{
|
||||||
command_print(context, "Syntax error:");
|
|
||||||
command_print_help_line(context, c, 0);
|
|
||||||
}
|
}
|
||||||
else if (retval == ERROR_COMMAND_CLOSE_CONNECTION)
|
else if (retval == ERROR_COMMAND_CLOSE_CONNECTION)
|
||||||
{
|
{
|
||||||
|
@ -450,69 +438,7 @@ int command_run_linef(command_context_t *context, char *format, ...)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void command_print_help_line(command_context_t* context, struct command_s *command, int indent)
|
|
||||||
{
|
|
||||||
command_t *c;
|
|
||||||
char *indent_text=malloc(indent + 2);
|
|
||||||
|
|
||||||
char *help = "no help available";
|
|
||||||
char name_buf[64];
|
|
||||||
|
|
||||||
if (indent)
|
|
||||||
{
|
|
||||||
indent_text[0] = ' ';
|
|
||||||
memset(indent_text + 1, '-', indent);
|
|
||||||
indent_text[indent + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (command->help)
|
|
||||||
help = command->help;
|
|
||||||
|
|
||||||
snprintf(name_buf, 64, command->name);
|
|
||||||
|
|
||||||
if (indent)
|
|
||||||
strncat(name_buf, indent_text, 64);
|
|
||||||
|
|
||||||
command_print(context, "%20s\t%s", name_buf, help, indent);
|
|
||||||
|
|
||||||
if (command->children)
|
|
||||||
{
|
|
||||||
for (c = command->children; c; c = c->next)
|
|
||||||
{
|
|
||||||
command_print_help_line(context, c, indent + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
free(indent_text);
|
|
||||||
}
|
|
||||||
|
|
||||||
int command_print_help_match(command_context_t* context, command_t* c_first, char* name, char** args, int argc)
|
|
||||||
{
|
|
||||||
command_t * c;
|
|
||||||
|
|
||||||
for (c = c_first; c; c = c->next)
|
|
||||||
{
|
|
||||||
if (argc > 0)
|
|
||||||
{
|
|
||||||
if (strcasecmp(c->name, args[0]))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (argc > 1)
|
|
||||||
{
|
|
||||||
command_print_help_match(context, c->children, name, args + 1, argc - 1);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
command_print_help_line(context, c, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ERROR_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int command_print_help(command_context_t* context, char* name, char** args, int argc)
|
|
||||||
{
|
|
||||||
return command_print_help_match(context, context->commands, name, args, argc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void command_set_output_handler(command_context_t* context, int (*output_handler)(struct command_context_s *context, const char* line), void *priv)
|
void command_set_output_handler(command_context_t* context, int (*output_handler)(struct command_context_s *context, const char* line), void *priv)
|
||||||
{
|
{
|
||||||
|
@ -547,9 +473,6 @@ command_context_t* command_init()
|
||||||
context->output_handler = NULL;
|
context->output_handler = NULL;
|
||||||
context->output_handler_priv = NULL;
|
context->output_handler_priv = NULL;
|
||||||
|
|
||||||
register_command(context, NULL, "help", command_print_help,
|
|
||||||
COMMAND_EXEC, "display this help");
|
|
||||||
|
|
||||||
register_command(context, NULL, "sleep", handle_sleep_command,
|
register_command(context, NULL, "sleep", handle_sleep_command,
|
||||||
COMMAND_ANY, "sleep for <n> milliseconds");
|
COMMAND_ANY, "sleep for <n> milliseconds");
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,6 @@ typedef struct command_s
|
||||||
struct command_s *children;
|
struct command_s *children;
|
||||||
int (*handler)(struct command_context_s *context, char* name, char** args, int argc);
|
int (*handler)(struct command_context_s *context, char* name, char** args, int argc);
|
||||||
enum command_mode mode;
|
enum command_mode mode;
|
||||||
char *help;
|
|
||||||
struct command_s *next;
|
struct command_s *next;
|
||||||
} command_t;
|
} command_t;
|
||||||
|
|
||||||
|
|
|
@ -64,12 +64,12 @@ proc flash args {
|
||||||
|
|
||||||
#Print help text for a command. Word wrap
|
#Print help text for a command. Word wrap
|
||||||
#help text that is too wide inside column.
|
#help text that is too wide inside column.
|
||||||
proc tcl_help {args} {
|
proc help {args} {
|
||||||
global ocd_helptext
|
global ocd_helptext
|
||||||
set cmd $args
|
set cmd $args
|
||||||
foreach a [lsort $ocd_helptext] {
|
foreach a [lsort $ocd_helptext] {
|
||||||
if {[string length $cmd]==0||[string first $cmd $a]!=-1||[string first $cmd [lindex $a 1]]!=-1} {
|
if {[string length $cmd]==0||[string first $cmd $a]!=-1||[string first $cmd [lindex $a 1]]!=-1} {
|
||||||
set w 40
|
set w 50
|
||||||
set cmdname [lindex $a 0]
|
set cmdname [lindex $a 0]
|
||||||
set h [lindex $a 1]
|
set h [lindex $a 1]
|
||||||
set n 0
|
set n 0
|
||||||
|
@ -96,7 +96,7 @@ proc tcl_help {args} {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_help_text tcl_help "Tcl implementation of help command"
|
add_help_text help "Tcl implementation of help command"
|
||||||
|
|
||||||
|
|
||||||
# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
|
# If a fn is unknown to Tcl, we try to execute it as an OpenOCD command
|
||||||
|
|
Loading…
Reference in New Issue