From eec017952ae07b0ec22e486270c8d17a5ca8411d Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Fri, 5 May 2006 15:50:20 +0000 Subject: [PATCH] * mi/mi-main.c (captured_mi_execute_command): Check the return value of -interpreter-exec. --- gdb/ChangeLog | 5 +++++ gdb/mi/mi-main.c | 36 +++++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1d40c3007c1..620d157caed 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-05-05 Daniel Jacobowitz + + * mi/mi-main.c (captured_mi_execute_command): Check the return + value of -interpreter-exec. + 2006-05-03 Vladimir Prus * varobj.c (c_value_of_variable): Ignore top-level references. diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 213f97af720..c798c90b8fb 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -1107,23 +1107,37 @@ captured_mi_execute_command (struct ui_out *uiout, void *data) /* Call the "console" interpreter. */ argv[0] = "console"; argv[1] = context->command; - mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2); + args->rc = mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2); - /* If we changed interpreters, DON'T print out anything. */ + /* If we changed interpreters, DON'T print out anything. */ if (current_interp_named_p (INTERP_MI) || current_interp_named_p (INTERP_MI1) || current_interp_named_p (INTERP_MI2) || current_interp_named_p (INTERP_MI3)) { - /* print the result */ - /* FIXME: Check for errors here. */ - fputs_unfiltered (context->token, raw_stdout); - fputs_unfiltered ("^done", raw_stdout); - mi_out_put (uiout, raw_stdout); - mi_out_rewind (uiout); - fputs_unfiltered ("\n", raw_stdout); - args->action = EXECUTE_COMMAND_DISPLAY_PROMPT; - args->rc = MI_CMD_DONE; + if (args->rc == MI_CMD_DONE) + { + fputs_unfiltered (context->token, raw_stdout); + fputs_unfiltered ("^done", raw_stdout); + mi_out_put (uiout, raw_stdout); + mi_out_rewind (uiout); + fputs_unfiltered ("\n", raw_stdout); + args->action = EXECUTE_COMMAND_DISPLAY_PROMPT; + } + else if (args->rc == MI_CMD_ERROR) + { + if (mi_error_message) + { + fputs_unfiltered (context->token, raw_stdout); + fputs_unfiltered ("^error,msg=\"", raw_stdout); + fputstr_unfiltered (mi_error_message, '"', raw_stdout); + xfree (mi_error_message); + fputs_unfiltered ("\"\n", raw_stdout); + } + mi_out_rewind (uiout); + } + else + mi_out_rewind (uiout); } break; }