This is an automated email from Gerrit.

Stian Skjelstad ([email protected]) just uploaded a new patch set to Gerrit, which 
you can find at http://openocd.zylin.com/470

-- gerrit

commit 017554b1a5ee70275f6ba308ff2e6fc112fdc17c
Author: Stian Skjelsad <[email protected]>
Date:   Sat Feb 18 16:10:19 2012 +0100

    When calling openocd from a shell like this:
    
    openocd -f board/sheevaplug.cfg -c init -c exit
    
    the calling shell will believe that openocd exited with an error due to 
exitval will be non-zero
    
    This is not tested against incomming telnet
    
    Change-Id: I63d15715a7b46f39a7de261a45039f8c3cad7a98
    Signed-off-by: Stian Skjelstad <[email protected]>

diff --git a/src/helper/command.c b/src/helper/command.c
index c218f3f..ff078cb 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -120,10 +120,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;
@@ -673,8 +678,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;
diff --git a/src/helper/log.h b/src/helper/log.h
index e161a6e..ad8d247 100644
--- a/src/helper/log.h
+++ b/src/helper/log.h
@@ -138,5 +138,5 @@ extern int debug_level;
  * make no assumptions about what went wrong and try to handle the problem.
  */
 #define ERROR_FAIL                                             (-4)
-
+#define ERROR_OK_EXIT                                  (-5)
 #endif /* LOG_H */
diff --git a/src/openocd.c b/src/openocd.c
index 048ce85..d06e2c5 100644
--- a/src/openocd.c
+++ b/src/openocd.c
@@ -279,6 +279,8 @@ static int openocd_thread(int argc, char *argv[], struct 
command_context *cmd_ct
                return EXIT_FAILURE;
 
        ret = parse_config_file(cmd_ctx);
+       if (ret == ERROR_OK_EXIT)
+               return ERROR_OK;
        if (ret != ERROR_OK)
                return EXIT_FAILURE;
 

-- 

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to