From 173a43ff15e62ad8cb716e566ec718f9a6507ef6 Mon Sep 17 00:00:00 2001 From: oharboe Date: Fri, 11 Jul 2008 19:30:54 +0000 Subject: [PATCH] help is now implemented in startup.tcl/help git-svn-id: svn://svn.berlios.de/openocd/trunk@797 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/helper/command.c | 81 ++------------------------------------------ src/helper/command.h | 1 - src/startup.tcl | 6 ++-- 3 files changed, 5 insertions(+), 83 deletions(-) diff --git a/src/helper/command.c b/src/helper/command.c index e536cca511..45b66d6000 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -42,8 +42,6 @@ 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_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); @@ -69,7 +67,6 @@ command_t* register_command(command_context_t *context, command_t *parent, char c->mode = mode; if (!help) help=""; - c->help = strdup(help); c->next = NULL; /* 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_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); return c; } @@ -138,8 +135,6 @@ int unregister_all_commands(command_context_t *context) c->children = c->children->next; free(c2->name); c2->name = NULL; - free(c2->help); - c2->help = NULL; free(c2); c2 = NULL; } @@ -148,8 +143,6 @@ int unregister_all_commands(command_context_t *context) free(c->name); c->name = NULL; - free(c->help); - c->help = NULL; free(c); c = NULL; } @@ -185,16 +178,12 @@ int unregister_command(command_context_t *context, char *name) for (c2 = c->children; c2; c2 = c2->next) { free(c2->name); - if (c2->help) - free(c2->help); free(c2); } } /* delete command */ free(c->name); - if (c->help) - free(c->help); 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); 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) { @@ -450,69 +438,7 @@ int command_run_linef(command_context_t *context, char *format, ...) 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) { @@ -547,9 +473,6 @@ command_context_t* command_init() context->output_handler = 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, COMMAND_ANY, "sleep for milliseconds"); diff --git a/src/helper/command.h b/src/helper/command.h index bc4d332e66..76a49a545d 100644 --- a/src/helper/command.h +++ b/src/helper/command.h @@ -59,7 +59,6 @@ typedef struct command_s struct command_s *children; int (*handler)(struct command_context_s *context, char* name, char** args, int argc); enum command_mode mode; - char *help; struct command_s *next; } command_t; diff --git a/src/startup.tcl b/src/startup.tcl index 1b5092e0a7..294dee28de 100644 --- a/src/startup.tcl +++ b/src/startup.tcl @@ -64,12 +64,12 @@ proc flash args { #Print help text for a command. Word wrap #help text that is too wide inside column. -proc tcl_help {args} { +proc help {args} { global ocd_helptext set cmd $args foreach a [lsort $ocd_helptext] { 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 h [lindex $a 1] 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 -- 2.30.2