OSDN Git Service

* mi/mi-main.c (captured_mi_execute_command): Check the return
authordrow <drow>
Fri, 5 May 2006 15:50:20 +0000 (15:50 +0000)
committerdrow <drow>
Fri, 5 May 2006 15:50:20 +0000 (15:50 +0000)
value of -interpreter-exec.

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

index 1d40c30..620d157 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 213f97a..c798c90 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;
       }