X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fopenocd.c;h=623bd0c1625d0403e2ef294d25fe4ba31993f6b2;hp=0ae0d19f3537bdb87217790db09ab69944a9c406;hb=bc7fa896e69d5a325776da4e5b423940cb1124dd;hpb=c5eb8e29bdc296c2d0b25cc771639567b5f7707f diff --git a/src/openocd.c b/src/openocd.c index 0ae0d19f35..623bd0c162 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -29,12 +29,14 @@ #endif #include "openocd.h" +#include #include #include #include #include #include -#include +#include +#include #include #include @@ -61,7 +63,6 @@ COMMAND_HANDLER(handle_version_command) return ERROR_OK; } - static int log_target_callback_event_handler(struct target *target, enum target_event event, void *priv) { switch (event) @@ -114,12 +115,12 @@ COMMAND_HANDLER(handle_init_command) if (ERROR_OK != retval) return ERROR_FAIL; - if ((retval = jtag_interface_init(CMD_CTX)) != ERROR_OK) + if ((retval = adapter_init(CMD_CTX)) != ERROR_OK) { - /* we must be able to set up the jtag interface */ + /* we must be able to set up the debug adapter */ return retval; } - LOG_DEBUG("jtag interface init complete"); + LOG_DEBUG("Debug Adapter init complete"); /* Try to initialize & examine the JTAG chain at this point, * but continue startup regardless. Note that platforms @@ -158,6 +159,16 @@ COMMAND_HANDLER(handle_init_command) return ERROR_OK; } +COMMAND_HANDLER(handle_add_script_search_dir_command) +{ + if (CMD_ARGC != 1) + return ERROR_COMMAND_SYNTAX_ERROR; + + add_script_search_dir(CMD_ARGV[0]); + + return ERROR_OK; +} + static const struct command_registration openocd_command_handlers[] = { { .name = "version", @@ -180,11 +191,18 @@ static const struct command_registration openocd_command_handlers[] = { "Unless 'noinit' is called, this command is " "called automatically at the end of startup.", + }, + { + .name = "add_script_search_dir", + .handler = &handle_add_script_search_dir_command, + .mode = COMMAND_ANY, + .help = "dir to search for config files and scripts", + }, COMMAND_REGISTRATION_DONE }; -int openocd_register_commands(struct command_context *cmd_ctx) +static int openocd_register_commands(struct command_context *cmd_ctx) { return register_commands(cmd_ctx, NULL, openocd_command_handlers); } @@ -192,7 +210,7 @@ int openocd_register_commands(struct command_context *cmd_ctx) struct command_context *global_cmd_ctx; /* NB! this fn can be invoked outside this file for non PC hosted builds */ -struct command_context *setup_command_handler(Jim_Interp *interp) +static struct command_context *setup_command_handler(Jim_Interp *interp) { log_init(); LOG_DEBUG("log_init: complete"); @@ -202,11 +220,12 @@ struct command_context *setup_command_handler(Jim_Interp *interp) /* register subsystem commands */ typedef int (*command_registrant_t)(struct command_context *cmd_ctx); - command_registrant_t command_registrants[] = { + static const command_registrant_t command_registrants[] = { &openocd_register_commands, &server_register_commands, &gdb_register_commands, &log_register_commands, + &interface_register_commands, &jtag_register_commands, &xsvf_register_commands, &svf_register_commands, @@ -228,7 +247,8 @@ struct command_context *setup_command_handler(Jim_Interp *interp) } LOG_DEBUG("command registration: complete"); - LOG_OUTPUT(OPENOCD_VERSION "\n"); + LOG_OUTPUT(OPENOCD_VERSION "\n" + "Licensed under GNU GPL v2\n"); global_cmd_ctx = cmd_ctx; @@ -254,13 +274,15 @@ int openocd_main(int argc, char *argv[]) "http://openocd.berlios.de/doc/doxygen/bugs.html" "\n"); - command_context_mode(cmd_ctx, COMMAND_CONFIG); command_set_output_handler(cmd_ctx, configuration_output_handler, NULL); if (parse_cmdline_args(cmd_ctx, argc, argv) != ERROR_OK) return EXIT_FAILURE; + if (server_preinit() != ERROR_OK) + return EXIT_FAILURE; + ret = parse_config_file(cmd_ctx); if (ret != ERROR_OK) return EXIT_FAILURE; @@ -292,7 +314,7 @@ int openocd_main(int argc, char *argv[]) /* free commandline interface */ command_done(cmd_ctx); - jtag_interface_quit(); + adapter_quit(); return ret; }