aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-05-05 15:50:20 +0000
committerDaniel Jacobowitz <drow@false.org>2006-05-05 15:50:20 +0000
commiteec017952ae07b0ec22e486270c8d17a5ca8411d (patch)
tree5d2d8691a94b6340e8d277cec6d8877cab7f9d4d /gdb/mi
parent79c214e04d4aa4881ac965958cddfe4643fd95e7 (diff)
downloadgdb-eec017952ae07b0ec22e486270c8d17a5ca8411d.zip
gdb-eec017952ae07b0ec22e486270c8d17a5ca8411d.tar.gz
gdb-eec017952ae07b0ec22e486270c8d17a5ca8411d.tar.bz2
* mi/mi-main.c (captured_mi_execute_command): Check the return
value of -interpreter-exec.
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-main.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index 213f97a..c798c90 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;
}