From: Zach W. <zw...@us...> - 2009-12-04 12:31:17
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via c5eb8e29bdc296c2d0b25cc771639567b5f7707f (commit) via eae56d27c3892188560918526710d44d147b0c8d (commit) from a535d2f64337f39902aebd1a5e9488a85f542b7f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c5eb8e29bdc296c2d0b25cc771639567b5f7707f Author: Zachary T Welch <zw...@su...> Date: Thu Dec 3 17:38:24 2009 -0800 check top-level command registrations When calling module_register_commands, the return value needs to be checked for failures. Instead of duplicating code, use an array of function pointers to the identical registration functions to iterate over during startup. diff --git a/src/openocd.c b/src/openocd.c index da15969..0ae0d19 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -184,6 +184,11 @@ static const struct command_registration openocd_command_handlers[] = { COMMAND_REGISTRATION_DONE }; +int openocd_register_commands(struct command_context *cmd_ctx) +{ + return register_commands(cmd_ctx, NULL, openocd_command_handlers); +} + struct command_context *global_cmd_ctx; /* NB! this fn can be invoked outside this file for non PC hosted builds */ @@ -192,28 +197,41 @@ struct command_context *setup_command_handler(Jim_Interp *interp) log_init(); LOG_DEBUG("log_init: complete"); - struct command_context *cmd_ctx; - - global_cmd_ctx = cmd_ctx = command_init(openocd_startup_tcl, interp); + const char *startup = openocd_startup_tcl; + struct command_context *cmd_ctx = command_init(startup, interp); - register_commands(cmd_ctx, NULL, openocd_command_handlers); /* register subsystem commands */ - server_register_commands(cmd_ctx); - gdb_register_commands(cmd_ctx); - log_register_commands(cmd_ctx); - jtag_register_commands(cmd_ctx); - xsvf_register_commands(cmd_ctx); - svf_register_commands(cmd_ctx); - target_register_commands(cmd_ctx); - flash_register_commands(cmd_ctx); - nand_register_commands(cmd_ctx); - pld_register_commands(cmd_ctx); - mflash_register_commands(cmd_ctx); - + typedef int (*command_registrant_t)(struct command_context *cmd_ctx); + command_registrant_t command_registrants[] = { + &openocd_register_commands, + &server_register_commands, + &gdb_register_commands, + &log_register_commands, + &jtag_register_commands, + &xsvf_register_commands, + &svf_register_commands, + &target_register_commands, + &flash_register_commands, + &nand_register_commands, + &pld_register_commands, + &mflash_register_commands, + NULL + }; + for (unsigned i = 0; NULL != command_registrants[i]; i++) + { + int retval = (*command_registrants[i])(cmd_ctx); + if (ERROR_OK != retval) + { + command_done(cmd_ctx); + return NULL; + } + } LOG_DEBUG("command registration: complete"); LOG_OUTPUT(OPENOCD_VERSION "\n"); + global_cmd_ctx = cmd_ctx; + return cmd_ctx; } commit eae56d27c3892188560918526710d44d147b0c8d Author: Zachary T Welch <zw...@su...> Date: Thu Dec 3 17:41:39 2009 -0800 allow 'jtag init' to be run in any mode Help alleviate further potential problems with interactive startup. diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c index cc89080..81bafbb 100644 --- a/src/jtag/tcl.c +++ b/src/jtag/tcl.c @@ -828,7 +828,7 @@ COMMAND_HANDLER(handle_jtag_init_command) static const struct command_registration jtag_subcommand_handlers[] = { { .name = "init", - .mode = COMMAND_CONFIG, + .mode = COMMAND_ANY, .handler = &handle_jtag_init_command, .help = "initialize jtag scan chain", }, ----------------------------------------------------------------------- Summary of changes: src/jtag/tcl.c | 2 +- src/openocd.c | 50 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 35 insertions(+), 17 deletions(-) hooks/post-receive -- Main OpenOCD repository |