aboutsummaryrefslogtreecommitdiff
path: root/src/openocd.c
diff options
context:
space:
mode:
authorMateusz Manowiecki <segmentation@fault.pl>2015-01-05 16:40:16 +0100
committerPaul Fertser <fercerpav@gmail.com>2015-03-09 06:25:45 +0000
commit5087a9554851cd7e1d33d13deb0f5d35b89369f6 (patch)
tree5b97ba8d8257778bd12f76a00c7245cc56ca18f7 /src/openocd.c
parentef0fa97a717e7f1d7af276f7d67897803c505d35 (diff)
Added system signal handling to Linux version
(with http://www.cons.org/cracauer/sigint.html in mind) Change-Id: I15f559bc1122a408c3fb9338ba55c16fab3187e1 Signed-off-by: Mateusz Manowiecki <segmentation@fault.pl> Reviewed-on: http://openocd.zylin.com/2443 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src/openocd.c')
-rw-r--r--src/openocd.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/openocd.c b/src/openocd.c
index 758febb4..b0dd21ab 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -277,30 +277,28 @@ static int openocd_thread(int argc, char *argv[], struct command_context *cmd_ct
int ret;
if (parse_cmdline_args(cmd_ctx, argc, argv) != ERROR_OK)
- return EXIT_FAILURE;
+ return ERROR_FAIL;
if (server_preinit() != ERROR_OK)
- return EXIT_FAILURE;
+ return ERROR_FAIL;
ret = parse_config_file(cmd_ctx);
if (ret != ERROR_OK)
- return EXIT_FAILURE;
+ return ERROR_FAIL;
ret = server_init(cmd_ctx);
if (ERROR_OK != ret)
- return EXIT_FAILURE;
+ return ERROR_FAIL;
if (init_at_startup) {
ret = command_run_line(cmd_ctx, "init");
if (ERROR_OK != ret)
- return EXIT_FAILURE;
+ return ERROR_FAIL;
}
server_loop(cmd_ctx);
- server_quit();
-
- return ret;
+ return server_quit();
}
/* normally this is the main() function entry, but if OpenOCD is linked
@@ -338,5 +336,10 @@ int openocd_main(int argc, char *argv[])
adapter_quit();
+ if (ERROR_FAIL == ret)
+ return EXIT_FAILURE;
+ else if (ERROR_OK != ret)
+ exit_on_signal(ret);
+
return ret;
}