Import of readline 4.3.
[deliverable/binutils-gdb.git] / gdb / cli / cli-setshow.c
index 47ad244a6e769b93245ab67b38f6552a12620dd7..efd334f25e4dfde1751bc89d5afae3a7d7349f33 100644 (file)
@@ -1,5 +1,6 @@
 /* Handle set and show GDB commands.
-   Copyright 2000, 2001 Free Software Foundation, Inc.
+
+   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <readline/tilde.h>
 #include "defs.h"
 #include "value.h"
 #include <ctype.h>
-#if 0
 #include "gdb_string.h"
-#endif
 
-#ifdef UI_OUT
 #include "ui-out.h"
-#endif
 
 #include "cli/cli-decode.h"
 #include "cli/cli-cmds.h"
@@ -35,9 +33,8 @@
 
 static int parse_binary_operation (char *);
 
-static enum cmd_auto_boolean parse_auto_binary_operation (const char *arg);
 \f
-static enum cmd_auto_boolean
+static enum auto_boolean
 parse_auto_binary_operation (const char *arg)
 {
   if (arg != NULL && *arg != '\0')
@@ -49,18 +46,18 @@ parse_auto_binary_operation (const char *arg)
          || strncmp (arg, "1", length) == 0
          || strncmp (arg, "yes", length) == 0
          || strncmp (arg, "enable", length) == 0)
-       return CMD_AUTO_BOOLEAN_TRUE;
+       return AUTO_BOOLEAN_TRUE;
       else if (strncmp (arg, "off", length) == 0
               || strncmp (arg, "0", length) == 0
               || strncmp (arg, "no", length) == 0
               || strncmp (arg, "disable", length) == 0)
-       return CMD_AUTO_BOOLEAN_FALSE;
+       return AUTO_BOOLEAN_FALSE;
       else if (strncmp (arg, "auto", length) == 0
               || (strncmp (arg, "-1", length) == 0 && length > 1))
-       return CMD_AUTO_BOOLEAN_AUTO;
+       return AUTO_BOOLEAN_AUTO;
     }
   error ("\"on\", \"off\" or \"auto\" expected.");
-  return CMD_AUTO_BOOLEAN_AUTO; /* pacify GCC */
+  return AUTO_BOOLEAN_AUTO; /* pacify GCC */
 }
 
 static int
@@ -168,7 +165,7 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
          *(int *) c->var = parse_binary_operation (arg);
          break;
        case var_auto_boolean:
-         *(enum cmd_auto_boolean *) c->var = parse_auto_binary_operation (arg);
+         *(enum auto_boolean *) c->var = parse_auto_binary_operation (arg);
          break;
        case var_uinteger:
          if (arg == NULL)
@@ -258,19 +255,20 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
     }
   else if (c->type == show_cmd)
     {
-#ifdef UI_OUT
       struct cleanup *old_chain;
       struct ui_stream *stb;
       int quote;
 
       stb = ui_out_stream_new (uiout);
       old_chain = make_cleanup_ui_out_stream_delete (stb);
-#endif /* UI_OUT */
+
+      /* Possibly call the pre hook.  */
+      if (c->pre_show_hook)
+       (c->pre_show_hook) (c);
 
       /* Print doc minus "show" at start.  */
       print_doc_line (gdb_stdout, c->doc + 5);
 
-#ifdef UI_OUT
       ui_out_text (uiout, " is ");
       ui_out_wrap_hint (uiout, "    ");
       quote = 0;
@@ -296,15 +294,15 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
          fputs_filtered (*(int *) c->var ? "on" : "off", stb->stream);
          break;
        case var_auto_boolean:
-         switch (*(enum cmd_auto_boolean*) c->var)
+         switch (*(enum auto_boolean*) c->var)
            {
-           case CMD_AUTO_BOOLEAN_TRUE:
+           case AUTO_BOOLEAN_TRUE:
              fputs_filtered ("on", stb->stream);
              break;
-           case CMD_AUTO_BOOLEAN_FALSE:
+           case AUTO_BOOLEAN_FALSE:
              fputs_filtered ("off", stb->stream);
              break;
-           case CMD_AUTO_BOOLEAN_AUTO:
+           case AUTO_BOOLEAN_AUTO:
              fputs_filtered ("auto", stb->stream);
              break;
            default:
@@ -342,76 +340,10 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
        ui_out_text (uiout, "\"");
       ui_out_text (uiout, ".\n");
       do_cleanups (old_chain);
-#else
-      fputs_filtered (" is ", gdb_stdout);
-      wrap_here ("    ");
-      switch (c->var_type)
-       {
-       case var_string:
-         {
-           fputs_filtered ("\"", gdb_stdout);
-           if (*(unsigned char **) c->var)
-             fputstr_filtered (*(unsigned char **) c->var, '"', gdb_stdout);
-           fputs_filtered ("\"", gdb_stdout);
-         }
-         break;
-       case var_string_noescape:
-       case var_filename:
-       case var_enum:
-         fputs_filtered ("\"", gdb_stdout);
-         if (*(char **) c->var)
-           fputs_filtered (*(char **) c->var, gdb_stdout);
-         fputs_filtered ("\"", gdb_stdout);
-         break;
-       case var_boolean:
-         fputs_filtered (*(int *) c->var ? "on" : "off", gdb_stdout);
-         break;
-       case var_auto_boolean:
-         switch (*(enum cmd_auto_boolean*) c->var)
-           {
-           case CMD_AUTO_BOOLEAN_TRUE:
-             fputs_filtered ("on", gdb_stdout);
-             break;
-           case CMD_AUTO_BOOLEAN_FALSE:
-             fputs_filtered ("off", gdb_stdout);
-             break;
-           case CMD_AUTO_BOOLEAN_AUTO:
-             fputs_filtered ("auto", gdb_stdout);
-             break;
-           default:
-             internal_error (__FILE__, __LINE__,
-                             "do_setshow_command: invalid var_auto_boolean");
-             break;
-           }
-         break;
-       case var_uinteger:
-         if (*(unsigned int *) c->var == UINT_MAX)
-           {
-             fputs_filtered ("unlimited", gdb_stdout);
-             break;
-           }
-         /* else fall through */
-       case var_zinteger:
-         fprintf_filtered (gdb_stdout, "%u", *(unsigned int *) c->var);
-         break;
-       case var_integer:
-         if (*(int *) c->var == INT_MAX)
-           {
-             fputs_filtered ("unlimited", gdb_stdout);
-           }
-         else
-           fprintf_filtered (gdb_stdout, "%d", *(int *) c->var);
-         break;
-
-       default:
-         error ("gdb internal error: bad var_type in do_setshow_command");
-       }
-      fputs_filtered (".\n", gdb_stdout);
-#endif
     }
   else
     error ("gdb internal error: bad cmd_type in do_setshow_command");
-  (*c->function.sfunc) (NULL, from_tty, c);
+  c->func (c, NULL, from_tty);
   if (c->type == set_cmd && set_hook)
     set_hook (c);
 }
@@ -421,44 +353,28 @@ do_setshow_command (char *arg, int from_tty, struct cmd_list_element *c)
 void
 cmd_show_list (struct cmd_list_element *list, int from_tty, char *prefix)
 {
-#ifdef UI_OUT
-  ui_out_list_begin (uiout, "showlist");
-#endif
+  ui_out_tuple_begin (uiout, "showlist");
   for (; list != NULL; list = list->next)
     {
       /* If we find a prefix, run its list, prefixing our output by its
          prefix (with "show " skipped).  */
-#ifdef UI_OUT
       if (list->prefixlist && !list->abbrev_flag)
        {
-         ui_out_list_begin (uiout, "optionlist");
+         ui_out_tuple_begin (uiout, "optionlist");
          ui_out_field_string (uiout, "prefix", list->prefixname + 5);
          cmd_show_list (*list->prefixlist, from_tty, list->prefixname + 5);
-         ui_out_list_end (uiout);
+         ui_out_tuple_end (uiout);
        }
       if (list->type == show_cmd)
        {
-         ui_out_list_begin (uiout, "option");
+         ui_out_tuple_begin (uiout, "option");
          ui_out_text (uiout, prefix);
          ui_out_field_string (uiout, "name", list->name);
          ui_out_text (uiout, ":  ");
          do_setshow_command ((char *) NULL, from_tty, list);
-         ui_out_list_end (uiout);
+         ui_out_tuple_end (uiout);
        }
-#else
-      if (list->prefixlist && !list->abbrev_flag)
-       cmd_show_list (*list->prefixlist, from_tty, list->prefixname + 5);
-      if (list->type == show_cmd)
-       {
-         fputs_filtered (prefix, gdb_stdout);
-         fputs_filtered (list->name, gdb_stdout);
-         fputs_filtered (":  ", gdb_stdout);
-         do_setshow_command ((char *) NULL, from_tty, list);
-       }
-#endif
     }
-#ifdef UI_OUT
-  ui_out_list_end (uiout);
-#endif
+  ui_out_tuple_end (uiout);
 }
 
This page took 0.038936 seconds and 4 git commands to generate.