* mi/mi-main.c (captured_mi_execute_command): Check the return
authorDaniel Jacobowitz <drow@false.org>
Fri, 5 May 2006 15:50:20 +0000 (15:50 +0000)
committerDaniel Jacobowitz <drow@false.org>
Fri, 5 May 2006 15:50:20 +0000 (15:50 +0000)
value of -interpreter-exec.

gdb/ChangeLog
gdb/mi/mi-main.c

index 1d40c3007c144592d5468f3cbe4e0ce05f58919d..620d157caed699eb9e0762cbf460feded82732d9 100644 (file)
@@ -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.
index 213f97af72062d1e759e3b85ca9a4a15301d0790..c798c90b8fb544bda534e51070065b4f2651e96f 100644 (file)
@@ -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;
       }