X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Fcommand.c;h=bd7113a78cd27d40dca98e3ea0e6c96b6d7a1c63;hp=85abe6bcf0328ff4c4d1fbec32b223107d6af95a;hb=d0e763ac7ef6aa17b17bd00ccdfbccfb4eacda69;hpb=ba2fbe22470915359e1905aaad4c613eacbdf6dc diff --git a/src/helper/command.c b/src/helper/command.c index 85abe6bcf0..bd7113a78c 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -22,9 +22,7 @@ * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + * along with this program. If not, see . * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -121,7 +119,7 @@ static int command_retval_set(Jim_Interp *interp, int retval) if (return_retval != NULL) *return_retval = retval; - return (retval == ERROR_OK) ? JIM_OK : JIM_ERR; + return (retval == ERROR_OK) ? JIM_OK : retval; } extern struct command_context *global_cmd_ctx; @@ -365,7 +363,7 @@ static int register_command_handler(struct command_context *cmd_ctx, LOG_DEBUG("registering '%s'...", ocd_name); - Jim_CmdProc func = c->handler ? &script_command : &command_unknown; + Jim_CmdProc *func = c->handler ? &script_command : &command_unknown; int retval = Jim_CreateCommand(interp, ocd_name, func, c, NULL); free(ocd_name); if (JIM_OK != retval) @@ -659,21 +657,7 @@ int command_run_line(struct command_context *context, char *line) } Jim_DeleteAssocData(interp, "context"); } - if (retcode == JIM_ERR) { - if (retval != ERROR_COMMAND_CLOSE_CONNECTION) { - /* We do not print the connection closed error message */ - Jim_MakeErrorMessage(interp); - LOG_USER("%s", Jim_GetString(Jim_GetResult(interp), NULL)); - } - if (retval == ERROR_OK) { - /* It wasn't a low level OpenOCD command that failed */ - return ERROR_FAIL; - } - return retval; - } else if (retcode == JIM_EXIT) { - /* ignore. - * exit(Jim_GetExitCode(interp)); */ - } else { + if (retcode == JIM_OK) { const char *result; int reslen; @@ -693,7 +677,22 @@ int command_run_line(struct command_context *context, char *line) LOG_USER_N("\n"); } retval = ERROR_OK; + } else if (retcode == JIM_EXIT) { + /* ignore. + * exit(Jim_GetExitCode(interp)); */ + } else if (retcode == ERROR_COMMAND_CLOSE_CONNECTION) { + return retcode; + } else { + Jim_MakeErrorMessage(interp); + LOG_USER("%s", Jim_GetString(Jim_GetResult(interp), NULL)); + + if (retval == ERROR_OK) { + /* It wasn't a low level OpenOCD command that failed */ + return ERROR_FAIL; + } + return retval; } + return retval; } @@ -868,7 +867,7 @@ static COMMAND_HELPER(command_help_show, struct command *c, unsigned n, free(cmd_name); if (is_match) { - if (c->usage) { + if (c->usage && strlen(c->usage) > 0) { LOG_USER_N(" "); command_help_show_wrap(c->usage, 0, n + 5); } else @@ -1070,8 +1069,10 @@ static int jim_command_type(Jim_Interp *interp, int argc, Jim_Obj *const *argv) Jim_SetResultString(interp, "native", -1); else if (c->handler) Jim_SetResultString(interp, "simple", -1); - else + else if (remaining == 0) Jim_SetResultString(interp, "group", -1); + else + Jim_SetResultString(interp, "unknown", -1); return JIM_OK; }