diff options
author | Spencer Oliver <ntfreak@users.sourceforge.net> | 2009-12-10 14:31:28 +0000 |
---|---|---|
committer | Spencer Oliver <ntfreak@users.sourceforge.net> | 2009-12-11 10:26:15 +0000 |
commit | 08589462adf3f81b480faacecb8352428212a2f5 (patch) | |
tree | 89d250156b25f36e5aa4d5d45246ef79e08738fd | |
parent | 6b9c14e9085b5620c20e9cadffe1f5e64f09a0c6 (diff) | |
download | openocd+libswd-08589462adf3f81b480faacecb8352428212a2f5.tar.gz openocd+libswd-08589462adf3f81b480faacecb8352428212a2f5.tar.bz2 openocd+libswd-08589462adf3f81b480faacecb8352428212a2f5.tar.xz openocd+libswd-08589462adf3f81b480faacecb8352428212a2f5.zip |
server: add server_preinit which is called before config file is parsed.
This fixes the issue under native win32 of the socket interface not being
enabled (via WSAStartup) before init is called from a script.
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
-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); |