diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-05-05 15:50:20 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-05-05 15:50:20 +0000 |
commit | eec017952ae07b0ec22e486270c8d17a5ca8411d (patch) | |
tree | 5d2d8691a94b6340e8d277cec6d8877cab7f9d4d | |
parent | 79c214e04d4aa4881ac965958cddfe4643fd95e7 (diff) | |
download | gdb-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.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 36 |
2 files changed, 30 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1d40c30..620d157 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-05-05 Daniel Jacobowitz <dan@codesourcery.com> + + * mi/mi-main.c (captured_mi_execute_command): Check the return + value of -interpreter-exec. + 2006-05-03 Vladimir Prus <ghost@cs.msu.su> * 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 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; } |