]> git.sur5r.net Git - openocd/blobdiff - src/openocd.c
Added system signal handling to Linux version
[openocd] / src / openocd.c
index 758febb4df7533ddcede040ab007ca7a22af92e5..b0dd21ab2c82bd7a72e038d7801b37bf97eeff42 100644 (file)
@@ -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;
 }