summaryrefslogtreecommitdiff
path: root/gdb/cli/cli-setshow.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/cli/cli-setshow.c')
-rw-r--r--gdb/cli/cli-setshow.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 9298665e8f2..218e1f36d8f 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -568,13 +568,10 @@ void
do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
{
struct ui_out *uiout = current_uiout;
- struct cleanup *old_chain;
- struct ui_file *stb;
gdb_assert (c->type == show_cmd);
- stb = mem_fileopen ();
- old_chain = make_cleanup_ui_file_delete (stb);
+ string_file stb;
/* Possibly call the pre hook. */
if (c->pre_show_hook)
@@ -584,29 +581,29 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
{
case var_string:
if (*(char **) c->var)
- fputstr_filtered (*(char **) c->var, '"', stb);
+ stb.putstr (*(char **) c->var, '"');
break;
case var_string_noescape:
case var_optional_filename:
case var_filename:
case var_enum:
if (*(char **) c->var)
- fputs_filtered (*(char **) c->var, stb);
+ stb.puts (*(char **) c->var);
break;
case var_boolean:
- fputs_filtered (*(int *) c->var ? "on" : "off", stb);
+ stb.puts (*(int *) c->var ? "on" : "off");
break;
case var_auto_boolean:
switch (*(enum auto_boolean*) c->var)
{
case AUTO_BOOLEAN_TRUE:
- fputs_filtered ("on", stb);
+ stb.puts ("on");
break;
case AUTO_BOOLEAN_FALSE:
- fputs_filtered ("off", stb);
+ stb.puts ("off");
break;
case AUTO_BOOLEAN_AUTO:
- fputs_filtered ("auto", stb);
+ stb.puts ("auto");
break;
default:
internal_error (__FILE__, __LINE__,
@@ -619,24 +616,24 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
case var_zuinteger:
if (c->var_type == var_uinteger
&& *(unsigned int *) c->var == UINT_MAX)
- fputs_filtered ("unlimited", stb);
+ stb.puts ("unlimited");
else
- fprintf_filtered (stb, "%u", *(unsigned int *) c->var);
+ stb.printf ("%u", *(unsigned int *) c->var);
break;
case var_integer:
case var_zinteger:
if (c->var_type == var_integer
&& *(int *) c->var == INT_MAX)
- fputs_filtered ("unlimited", stb);
+ stb.puts ("unlimited");
else
- fprintf_filtered (stb, "%d", *(int *) c->var);
+ stb.printf ("%d", *(int *) c->var);
break;
case var_zuinteger_unlimited:
{
if (*(int *) c->var == -1)
- fputs_filtered ("unlimited", stb);
+ stb.puts ("unlimited");
else
- fprintf_filtered (stb, "%d", *(int *) c->var);
+ stb.printf ("%d", *(int *) c->var);
}
break;
default:
@@ -653,14 +650,11 @@ do_show_command (const char *arg, int from_tty, struct cmd_list_element *c)
uiout->field_stream ("value", stb);
else
{
- std::string value = ui_file_as_string (stb);
-
if (c->show_value_func != NULL)
- c->show_value_func (gdb_stdout, from_tty, c, value.c_str ());
+ c->show_value_func (gdb_stdout, from_tty, c, stb.c_str ());
else
- deprecated_show_value_hack (gdb_stdout, from_tty, c, value.c_str ());
+ deprecated_show_value_hack (gdb_stdout, from_tty, c, stb.c_str ());
}
- do_cleanups (old_chain);
c->func (c, NULL, from_tty);
}