diff options
-rw-r--r-- | src/openocd.c | 5 | ||||
-rw-r--r-- | src/server/server.c | 11 | ||||
-rw-r--r-- | src/server/server.h | 1 |
3 files changed, 14 insertions, 3 deletions
diff --git a/src/openocd.c b/src/openocd.c index 8cb86746..1105d2a4 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -62,7 +62,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) @@ -255,13 +254,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; diff --git a/src/server/server.c b/src/server/server.c index 2f4bfb00..75a6bed0 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -487,8 +487,12 @@ void sig_handler(int sig) { } #endif -int server_init(struct command_context *cmd_ctx) +int server_preinit(void) { + /* this currently only calls WSAStartup on native win32 systems + * before any socket operations are performed. + * This is an issue if you call init in your config script */ + #ifdef _WIN32 WORD wVersionRequested; WSADATA wsaData; @@ -518,6 +522,11 @@ int server_init(struct command_context *cmd_ctx) signal(SIGABRT, sig_handler); #endif + return ERROR_OK; +} + +int server_init(struct command_context *cmd_ctx) +{ int ret = tcl_init(cmd_ctx); if (ERROR_OK != ret) return ret; diff --git a/src/server/server.h b/src/server/server.h index be1afbe4..a25920ed 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -74,6 +74,7 @@ int add_service(char *name, enum connection_type type, unsigned short port, input_handler_t in_handler, connection_closed_handler_t close_handler, void *priv); +int server_preinit(void); int server_init(struct command_context *cmd_ctx); int server_quit(void); |