]> git.sur5r.net Git - openocd/blobdiff - src/helper/command.c
When calling openocd from a shell like this:
[openocd] / src / helper / command.c
index ef0afa2b56bca06e5b88e13ce4c5ca2c97b4ec2b..868d0952ece6911ca18a69c20bab9737b714d98e 100644 (file)
@@ -118,10 +118,15 @@ static void command_log_capture_finish(struct log_capture_state *state)
 static int command_retval_set(Jim_Interp *interp, int retval)
 {
        int *return_retval = Jim_GetAssocData(interp, "retval");
-       if (return_retval != NULL)
-               *return_retval = retval;
-
-       return (retval == ERROR_OK) ? JIM_OK : JIM_ERR;
+       if (retval == ERROR_COMMAND_CLOSE_CONNECTION) {
+               if (return_retval != NULL)
+                       *return_retval = 0;
+               return JIM_EXIT;
+       } else {
+               if (return_retval != NULL)
+                       *return_retval = retval;
+               return (retval == ERROR_OK) ? JIM_OK : JIM_ERR;
+       }
 }
 
 extern struct command_context *global_cmd_ctx;
@@ -671,8 +676,7 @@ int command_run_line(struct command_context *context, char *line)
                }
                return retval;
        } else if (retcode == JIM_EXIT) {
-               /* ignore.
-                * exit(Jim_GetExitCode(interp)); */
+               return ERROR_OK_EXIT;
        } else {
                const char *result;
                int reslen;