X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Fcommand.c;h=cf824a64f3304367c5ab5f388d41ca8cf97076cd;hp=868d0952ece6911ca18a69c20bab9737b714d98e;hb=08d4411b59dd8bd0e7d8009003b71d23acbf6eee;hpb=e8641695c634109ebf5f1149923971770da1d28a diff --git a/src/helper/command.c b/src/helper/command.c index 868d0952ec..cf824a64f3 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -24,14 +24,14 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif -/* see Embedder-HOWTO.txt in Jim Tcl project hosted on BerliOS*/ +/* see Embedded-HOWTO.txt in Jim Tcl project hosted on BerliOS*/ #define JIM_EMBEDDED /* @todo the inclusion of target.h here is a layering violation */ @@ -118,15 +118,10 @@ static void command_log_capture_finish(struct log_capture_state *state) static int command_retval_set(Jim_Interp *interp, int retval) { int *return_retval = Jim_GetAssocData(interp, "retval"); - if (retval == ERROR_COMMAND_CLOSE_CONNECTION) { - if (return_retval != NULL) - *return_retval = 0; - return JIM_EXIT; - } else { - if (return_retval != NULL) - *return_retval = retval; - return (retval == ERROR_OK) ? JIM_OK : JIM_ERR; - } + if (return_retval != NULL) + *return_retval = retval; + + return (retval == ERROR_OK) ? JIM_OK : JIM_ERR; } extern struct command_context *global_cmd_ctx; @@ -157,6 +152,7 @@ static void script_command_args_free(const char **words, unsigned nwords) free((void *)words[i]); free(words); } + static const char **script_command_args_alloc( unsigned argc, Jim_Obj * const *argv, unsigned *nwords) { @@ -249,6 +245,7 @@ static struct command *command_find(struct command *head, const char *name) } return NULL; } + struct command *command_find_in_context(struct command_context *cmd_ctx, const char *name) { @@ -575,6 +572,7 @@ static char *__command_name(struct command *c, char delim, unsigned extra) } return name; } + char *command_name(struct command *c, char delim) { return __command_name(c, delim, 0); @@ -676,7 +674,8 @@ int command_run_line(struct command_context *context, char *line) } return retval; } else if (retcode == JIM_EXIT) { - return ERROR_OK_EXIT; + /* ignore. + * exit(Jim_GetExitCode(interp)); */ } else { const char *result; int reslen; @@ -781,7 +780,7 @@ static int jim_capture(Jim_Interp *interp, int argc, Jim_Obj *const *argv) /* disable polling during capture. This avoids capturing output * from polling. * - * This is necessary in order to avoid accidentially getting a non-empty + * This is necessary in order to avoid accidentally getting a non-empty * string for tcl fn's. */ bool save_poll = jtag_poll_get_enabled(); @@ -851,6 +850,7 @@ static void command_help_show_wrap(const char *str, unsigned n, unsigned n2) n = n2; } } + static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, bool show_help, const char *match) { @@ -915,6 +915,7 @@ static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, return CALL_COMMAND_HANDLER(command_help_show_list, c->children, n, show_help, match); } + COMMAND_HANDLER(handle_help_command) { bool full = strcmp(CMD_NAME, "help") == 0; @@ -931,19 +932,16 @@ COMMAND_HANDLER(handle_help_command) if (NULL != match) { char *prev = match; - match = alloc_printf("%s %s", match, - CMD_ARGV[i]); + match = alloc_printf("%s %s", match, CMD_ARGV[i]); free(prev); if (NULL == match) { - LOG_ERROR("unable to build " - "search string"); + LOG_ERROR("unable to build search string"); return -ENOMEM; } } else { match = alloc_printf("%s", CMD_ARGV[i]); if (NULL == match) { - LOG_ERROR("unable to build " - "search string"); + LOG_ERROR("unable to build search string"); return -ENOMEM; } } @@ -1315,6 +1313,8 @@ struct command_context *command_init(const char *startup_tcl, Jim_Interp *interp HostOs = "ecos"; #elif defined(__FreeBSD__) HostOs = "freebsd"; +#elif defined(__NetBSD__) + HostOs = "netbsd"; #elif defined(__OpenBSD__) HostOs = "openbsd"; #else