diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/cli/cli-setshow.c | 35 |
2 files changed, 30 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7ced885..cb77707 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2005-02-10 Andrew Cagney <cagney@gnu.org> + + * cli/cli-setshow.c (do_setshow_command): Move code printing the + value to the end of the function. Handle MI and non-MI output + differently. + 2005-02-09 Andrew Cagney <cagney@gnu.org> * cli/cli-decode.c (add_setshow_enum_cmd): Drop set_result and diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c index cf87cf6..73e47a4 100644 --- a/gdb/cli/cli-setshow.c +++ b/gdb/cli/cli-setshow.c @@ -266,11 +266,6 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) if (c->pre_show_hook) (c->pre_show_hook) (c); - /* Print doc minus "show" at start. */ - print_doc_line (gdb_stdout, c->doc + 5); - - ui_out_text (uiout, " is "); - ui_out_wrap_hint (uiout, " "); quote = 0; switch (c->var_type) { @@ -333,12 +328,30 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c) default: error ("gdb internal error: bad var_type in do_setshow_command"); } - if (quote) - ui_out_text (uiout, "\""); - ui_out_field_stream (uiout, "value", stb); - if (quote) - ui_out_text (uiout, "\""); - ui_out_text (uiout, ".\n"); + + + /* FIXME: cagney/2005-02-10: Need to split this in half: code to + convert the value into a string (esentially the above); and + code to print the value out. For the latter there should be + MI and CLI specific versions. */ + + if (ui_out_is_mi_like_p (uiout)) + ui_out_field_stream (uiout, "value", stb); + else + { + /* Print doc minus "show" at start. */ + print_doc_line (gdb_stdout, c->doc + 5); + + ui_out_text (uiout, " is "); + ui_out_wrap_hint (uiout, " "); + if (quote) + ui_out_text (uiout, "\""); + ui_out_field_stream (uiout, "value", stb); + if (quote) + ui_out_text (uiout, "\""); + ui_out_text (uiout, ".\n"); + do_cleanups (old_chain); + } do_cleanups (old_chain); } else |