Command abbreviation in define
[deliverable/binutils-gdb.git] / gdb / cli / cli-decode.c
index 43e1babe2d2f69eda9fcff08a5ef768672b3f6ed..4e302b7e8dea4e3926961261fa623d8cbad5b35b 100644 (file)
@@ -1,6 +1,6 @@
 /* Handle lists of commands, their decoding and documentation, for GDB.
 
 /* Handle lists of commands, their decoding and documentation, for GDB.
 
-   Copyright (C) 1986-2014 Free Software Foundation, Inc.
+   Copyright (C) 1986-2017 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
 
    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
@@ -19,7 +19,6 @@
 #include "symtab.h"
 #include <ctype.h>
 #include "gdb_regex.h"
 #include "symtab.h"
 #include <ctype.h>
 #include "gdb_regex.h"
-#include <string.h>
 #include "completer.h"
 #include "ui-out.h"
 #include "cli/cli-cmds.h"
 #include "completer.h"
 #include "ui-out.h"
 #include "cli/cli-cmds.h"
@@ -162,6 +161,15 @@ set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
   cmd->completer = completer; /* Ok.  */
 }
 
   cmd->completer = completer; /* Ok.  */
 }
 
+/* See definition in commands.h.  */
+
+void
+set_cmd_completer_handle_brkchars (struct cmd_list_element *cmd,
+                              completer_ftype_void *completer_handle_brkchars)
+{
+  cmd->completer_handle_brkchars = completer_handle_brkchars;
+}
+
 /* Add element named NAME.
    Space for NAME and DOC must be allocated by the caller.
    CLASS is the top level category into which commands are broken down
 /* Add element named NAME.
    Space for NAME and DOC must be allocated by the caller.
    CLASS is the top level category into which commands are broken down
@@ -181,11 +189,10 @@ set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
    of *LIST).  */
 
 struct cmd_list_element *
    of *LIST).  */
 
 struct cmd_list_element *
-add_cmd (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
+add_cmd (const char *name, enum command_class theclass, cmd_cfunc_ftype *fun,
         const char *doc, struct cmd_list_element **list)
 {
         const char *doc, struct cmd_list_element **list)
 {
-  struct cmd_list_element *c
-    = (struct cmd_list_element *) xmalloc (sizeof (struct cmd_list_element));
+  struct cmd_list_element *c = XNEW (struct cmd_list_element);
   struct cmd_list_element *p, *iter;
 
   /* Turn each alias of the old command into an alias of the new
   struct cmd_list_element *p, *iter;
 
   /* Turn each alias of the old command into an alias of the new
@@ -220,7 +227,7 @@ add_cmd (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
     }
 
   c->name = name;
     }
 
   c->name = name;
-  c->class = class;
+  c->theclass = theclass;
   set_cmd_cfunc (c, fun);
   set_cmd_context (c, NULL);
   c->doc = doc;
   set_cmd_cfunc (c, fun);
   set_cmd_context (c, NULL);
   c->doc = doc;
@@ -237,6 +244,7 @@ add_cmd (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
   c->prefix = NULL;
   c->abbrev_flag = 0;
   set_cmd_completer (c, make_symbol_completion_list_fn);
   c->prefix = NULL;
   c->abbrev_flag = 0;
   set_cmd_completer (c, make_symbol_completion_list_fn);
+  c->completer_handle_brkchars = NULL;
   c->destroyer = NULL;
   c->type = not_set_cmd;
   c->var = NULL;
   c->destroyer = NULL;
   c->type = not_set_cmd;
   c->var = NULL;
@@ -245,6 +253,7 @@ add_cmd (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
   c->user_commands = NULL;
   c->cmd_pointer = NULL;
   c->alias_chain = NULL;
   c->user_commands = NULL;
   c->cmd_pointer = NULL;
   c->alias_chain = NULL;
+  c->suppress_notification = NULL;
 
   return c;
 }
 
   return c;
 }
@@ -274,7 +283,7 @@ deprecate_cmd (struct cmd_list_element *cmd, const char *replacement)
 }
 
 struct cmd_list_element *
 }
 
 struct cmd_list_element *
-add_alias_cmd (const char *name, const char *oldname, enum command_class class,
+add_alias_cmd (const char *name, const char *oldname, enum command_class theclass,
               int abbrev_flag, struct cmd_list_element **list)
 {
   const char *tmp;
               int abbrev_flag, struct cmd_list_element **list)
 {
   const char *tmp;
@@ -297,7 +306,7 @@ add_alias_cmd (const char *name, const char *oldname, enum command_class class,
       return 0;
     }
 
       return 0;
     }
 
-  c = add_cmd (name, class, NULL, old->doc, list);
+  c = add_cmd (name, theclass, NULL, old->doc, list);
 
   /* If OLD->DOC can be freed, we should make another copy.  */
   if (old->doc_allocated)
 
   /* If OLD->DOC can be freed, we should make another copy.  */
   if (old->doc_allocated)
@@ -326,13 +335,13 @@ add_alias_cmd (const char *name, const char *oldname, enum command_class class,
    containing that list.  */
 
 struct cmd_list_element *
    containing that list.  */
 
 struct cmd_list_element *
-add_prefix_cmd (const char *name, enum command_class class,
+add_prefix_cmd (const char *name, enum command_class theclass,
                cmd_cfunc_ftype *fun,
                const char *doc, struct cmd_list_element **prefixlist,
                const char *prefixname, int allow_unknown,
                struct cmd_list_element **list)
 {
                cmd_cfunc_ftype *fun,
                const char *doc, struct cmd_list_element **prefixlist,
                const char *prefixname, int allow_unknown,
                struct cmd_list_element **list)
 {
-  struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
+  struct cmd_list_element *c = add_cmd (name, theclass, fun, doc, list);
   struct cmd_list_element *p;
 
   c->prefixlist = prefixlist;
   struct cmd_list_element *p;
 
   c->prefixlist = prefixlist;
@@ -354,13 +363,13 @@ add_prefix_cmd (const char *name, enum command_class class,
 /* Like add_prefix_cmd but sets the abbrev_flag on the new command.  */
 
 struct cmd_list_element *
 /* Like add_prefix_cmd but sets the abbrev_flag on the new command.  */
 
 struct cmd_list_element *
-add_abbrev_prefix_cmd (const char *name, enum command_class class,
+add_abbrev_prefix_cmd (const char *name, enum command_class theclass,
                       cmd_cfunc_ftype *fun, const char *doc,
                       struct cmd_list_element **prefixlist,
                       const char *prefixname,
                       int allow_unknown, struct cmd_list_element **list)
 {
                       cmd_cfunc_ftype *fun, const char *doc,
                       struct cmd_list_element **prefixlist,
                       const char *prefixname,
                       int allow_unknown, struct cmd_list_element **list)
 {
-  struct cmd_list_element *c = add_cmd (name, class, fun, doc, list);
+  struct cmd_list_element *c = add_cmd (name, theclass, fun, doc, list);
 
   c->prefixlist = prefixlist;
   c->prefixname = prefixname;
 
   c->prefixlist = prefixlist;
   c->prefixname = prefixname;
@@ -394,13 +403,13 @@ empty_sfunc (char *args, int from_tty, struct cmd_list_element *c)
 static struct cmd_list_element *
 add_set_or_show_cmd (const char *name,
                     enum cmd_types type,
 static struct cmd_list_element *
 add_set_or_show_cmd (const char *name,
                     enum cmd_types type,
-                    enum command_class class,
+                    enum command_class theclass,
                     var_types var_type,
                     void *var,
                     const char *doc,
                     struct cmd_list_element **list)
 {
                     var_types var_type,
                     void *var,
                     const char *doc,
                     struct cmd_list_element **list)
 {
-  struct cmd_list_element *c = add_cmd (name, class, NULL, doc, list);
+  struct cmd_list_element *c = add_cmd (name, theclass, NULL, doc, list);
 
   gdb_assert (type == set_cmd || type == show_cmd);
   c->type = type;
 
   gdb_assert (type == set_cmd || type == show_cmd);
   c->type = type;
@@ -423,7 +432,7 @@ add_set_or_show_cmd (const char *name,
 
 static void
 add_setshow_cmd_full (const char *name,
 
 static void
 add_setshow_cmd_full (const char *name,
-                     enum command_class class,
+                     enum command_class theclass,
                      var_types var_type, void *var,
                      const char *set_doc, const char *show_doc,
                      const char *help_doc,
                      var_types var_type, void *var,
                      const char *set_doc, const char *show_doc,
                      const char *help_doc,
@@ -449,7 +458,7 @@ add_setshow_cmd_full (const char *name,
       full_set_doc = xstrdup (set_doc);
       full_show_doc = xstrdup (show_doc);
     }
       full_set_doc = xstrdup (set_doc);
       full_show_doc = xstrdup (show_doc);
     }
-  set = add_set_or_show_cmd (name, set_cmd, class, var_type, var,
+  set = add_set_or_show_cmd (name, set_cmd, theclass, var_type, var,
                             full_set_doc, set_list);
   set->doc_allocated = 1;
 
                             full_set_doc, set_list);
   set->doc_allocated = 1;
 
@@ -458,7 +467,7 @@ add_setshow_cmd_full (const char *name,
 
   set_cmd_prefix (set, set_list);
 
 
   set_cmd_prefix (set, set_list);
 
-  show = add_set_or_show_cmd (name, show_cmd, class, var_type, var,
+  show = add_set_or_show_cmd (name, show_cmd, theclass, var_type, var,
                              full_show_doc, show_list);
   show->doc_allocated = 1;
   show->show_value_func = show_func;
                              full_show_doc, show_list);
   show->doc_allocated = 1;
   show->show_value_func = show_func;
@@ -476,7 +485,7 @@ add_setshow_cmd_full (const char *name,
 
 void
 add_setshow_enum_cmd (const char *name,
 
 void
 add_setshow_enum_cmd (const char *name,
-                     enum command_class class,
+                     enum command_class theclass,
                      const char *const *enumlist,
                      const char **var,
                      const char *set_doc,
                      const char *const *enumlist,
                      const char **var,
                      const char *set_doc,
@@ -489,7 +498,7 @@ add_setshow_enum_cmd (const char *name,
 {
   struct cmd_list_element *c;
 
 {
   struct cmd_list_element *c;
 
-  add_setshow_cmd_full (name, class, var_enum, var,
+  add_setshow_cmd_full (name, theclass, var_enum, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -505,7 +514,7 @@ const char * const auto_boolean_enums[] = { "on", "off", "auto", NULL };
    string.  FUNC is the corresponding callback.  */
 void
 add_setshow_auto_boolean_cmd (const char *name,
    string.  FUNC is the corresponding callback.  */
 void
 add_setshow_auto_boolean_cmd (const char *name,
-                             enum command_class class,
+                             enum command_class theclass,
                              enum auto_boolean *var,
                              const char *set_doc, const char *show_doc,
                              const char *help_doc,
                              enum auto_boolean *var,
                              const char *set_doc, const char *show_doc,
                              const char *help_doc,
@@ -516,7 +525,7 @@ add_setshow_auto_boolean_cmd (const char *name,
 {
   struct cmd_list_element *c;
 
 {
   struct cmd_list_element *c;
 
-  add_setshow_cmd_full (name, class, var_auto_boolean, var,
+  add_setshow_cmd_full (name, theclass, var_auto_boolean, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -529,7 +538,7 @@ add_setshow_auto_boolean_cmd (const char *name,
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
-add_setshow_boolean_cmd (const char *name, enum command_class class, int *var,
+add_setshow_boolean_cmd (const char *name, enum command_class theclass, int *var,
                         const char *set_doc, const char *show_doc,
                         const char *help_doc,
                         cmd_sfunc_ftype *set_func,
                         const char *set_doc, const char *show_doc,
                         const char *help_doc,
                         cmd_sfunc_ftype *set_func,
@@ -540,7 +549,7 @@ add_setshow_boolean_cmd (const char *name, enum command_class class, int *var,
   static const char *boolean_enums[] = { "on", "off", NULL };
   struct cmd_list_element *c;
 
   static const char *boolean_enums[] = { "on", "off", NULL };
   struct cmd_list_element *c;
 
-  add_setshow_cmd_full (name, class, var_boolean, var,
+  add_setshow_cmd_full (name, theclass, var_boolean, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -551,7 +560,7 @@ add_setshow_boolean_cmd (const char *name, enum command_class class, int *var,
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
-add_setshow_filename_cmd (const char *name, enum command_class class,
+add_setshow_filename_cmd (const char *name, enum command_class theclass,
                          char **var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
                          char **var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
@@ -562,7 +571,7 @@ add_setshow_filename_cmd (const char *name, enum command_class class,
 {
   struct cmd_list_element *set_result;
 
 {
   struct cmd_list_element *set_result;
 
-  add_setshow_cmd_full (name, class, var_filename, var,
+  add_setshow_cmd_full (name, theclass, var_filename, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -573,7 +582,7 @@ add_setshow_filename_cmd (const char *name, enum command_class class,
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
-add_setshow_string_cmd (const char *name, enum command_class class,
+add_setshow_string_cmd (const char *name, enum command_class theclass,
                        char **var,
                        const char *set_doc, const char *show_doc,
                        const char *help_doc,
                        char **var,
                        const char *set_doc, const char *show_doc,
                        const char *help_doc,
@@ -582,7 +591,7 @@ add_setshow_string_cmd (const char *name, enum command_class class,
                        struct cmd_list_element **set_list,
                        struct cmd_list_element **show_list)
 {
                        struct cmd_list_element **set_list,
                        struct cmd_list_element **show_list)
 {
-  add_setshow_cmd_full (name, class, var_string, var,
+  add_setshow_cmd_full (name, theclass, var_string, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -592,7 +601,7 @@ add_setshow_string_cmd (const char *name, enum command_class class,
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 struct cmd_list_element *
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 struct cmd_list_element *
-add_setshow_string_noescape_cmd (const char *name, enum command_class class,
+add_setshow_string_noescape_cmd (const char *name, enum command_class theclass,
                                 char **var,
                                 const char *set_doc, const char *show_doc,
                                 const char *help_doc,
                                 char **var,
                                 const char *set_doc, const char *show_doc,
                                 const char *help_doc,
@@ -603,7 +612,7 @@ add_setshow_string_noescape_cmd (const char *name, enum command_class class,
 {
   struct cmd_list_element *set_cmd;
 
 {
   struct cmd_list_element *set_cmd;
 
-  add_setshow_cmd_full (name, class, var_string_noescape, var,
+  add_setshow_cmd_full (name, theclass, var_string_noescape, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -614,7 +623,7 @@ add_setshow_string_noescape_cmd (const char *name, enum command_class class,
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
 void
-add_setshow_optional_filename_cmd (const char *name, enum command_class class,
+add_setshow_optional_filename_cmd (const char *name, enum command_class theclass,
                                   char **var,
                                   const char *set_doc, const char *show_doc,
                                   const char *help_doc,
                                   char **var,
                                   const char *set_doc, const char *show_doc,
                                   const char *help_doc,
@@ -625,7 +634,7 @@ add_setshow_optional_filename_cmd (const char *name, enum command_class class,
 {
   struct cmd_list_element *set_result;
  
 {
   struct cmd_list_element *set_result;
  
-  add_setshow_cmd_full (name, class, var_optional_filename, var,
+  add_setshow_cmd_full (name, theclass, var_optional_filename, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -657,7 +666,7 @@ integer_unlimited_completer (struct cmd_list_element *ignore,
    value.  SET_DOC and SHOW_DOC are the documentation strings.  This
    function is only used in Python API.  Please don't use it elsewhere.  */
 void
    value.  SET_DOC and SHOW_DOC are the documentation strings.  This
    function is only used in Python API.  Please don't use it elsewhere.  */
 void
-add_setshow_integer_cmd (const char *name, enum command_class class,
+add_setshow_integer_cmd (const char *name, enum command_class theclass,
                         int *var,
                         const char *set_doc, const char *show_doc,
                         const char *help_doc,
                         int *var,
                         const char *set_doc, const char *show_doc,
                         const char *help_doc,
@@ -668,7 +677,7 @@ add_setshow_integer_cmd (const char *name, enum command_class class,
 {
   struct cmd_list_element *set;
 
 {
   struct cmd_list_element *set;
 
-  add_setshow_cmd_full (name, class, var_integer, var,
+  add_setshow_cmd_full (name, theclass, var_integer, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -682,7 +691,7 @@ add_setshow_integer_cmd (const char *name, enum command_class class,
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
-add_setshow_uinteger_cmd (const char *name, enum command_class class,
+add_setshow_uinteger_cmd (const char *name, enum command_class theclass,
                          unsigned int *var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
                          unsigned int *var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
@@ -693,7 +702,7 @@ add_setshow_uinteger_cmd (const char *name, enum command_class class,
 {
   struct cmd_list_element *set;
 
 {
   struct cmd_list_element *set;
 
-  add_setshow_cmd_full (name, class, var_uinteger, var,
+  add_setshow_cmd_full (name, theclass, var_uinteger, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -707,7 +716,7 @@ add_setshow_uinteger_cmd (const char *name, enum command_class class,
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
-add_setshow_zinteger_cmd (const char *name, enum command_class class,
+add_setshow_zinteger_cmd (const char *name, enum command_class theclass,
                          int *var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
                          int *var,
                          const char *set_doc, const char *show_doc,
                          const char *help_doc,
@@ -716,7 +725,7 @@ add_setshow_zinteger_cmd (const char *name, enum command_class class,
                          struct cmd_list_element **set_list,
                          struct cmd_list_element **show_list)
 {
                          struct cmd_list_element **set_list,
                          struct cmd_list_element **show_list)
 {
-  add_setshow_cmd_full (name, class, var_zinteger, var,
+  add_setshow_cmd_full (name, theclass, var_zinteger, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -725,7 +734,7 @@ add_setshow_zinteger_cmd (const char *name, enum command_class class,
 
 void
 add_setshow_zuinteger_unlimited_cmd (const char *name,
 
 void
 add_setshow_zuinteger_unlimited_cmd (const char *name,
-                                    enum command_class class,
+                                    enum command_class theclass,
                                     int *var,
                                     const char *set_doc,
                                     const char *show_doc,
                                     int *var,
                                     const char *set_doc,
                                     const char *show_doc,
@@ -737,7 +746,7 @@ add_setshow_zuinteger_unlimited_cmd (const char *name,
 {
   struct cmd_list_element *set;
 
 {
   struct cmd_list_element *set;
 
-  add_setshow_cmd_full (name, class, var_zuinteger_unlimited, var,
+  add_setshow_cmd_full (name, theclass, var_zuinteger_unlimited, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -751,7 +760,7 @@ add_setshow_zuinteger_unlimited_cmd (const char *name,
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
 void
-add_setshow_zuinteger_cmd (const char *name, enum command_class class,
+add_setshow_zuinteger_cmd (const char *name, enum command_class theclass,
                           unsigned int *var,
                           const char *set_doc, const char *show_doc,
                           const char *help_doc,
                           unsigned int *var,
                           const char *set_doc, const char *show_doc,
                           const char *help_doc,
@@ -760,7 +769,7 @@ add_setshow_zuinteger_cmd (const char *name, enum command_class class,
                           struct cmd_list_element **set_list,
                           struct cmd_list_element **show_list)
 {
                           struct cmd_list_element **set_list,
                           struct cmd_list_element **show_list)
 {
-  add_setshow_cmd_full (name, class, var_zuinteger, var,
+  add_setshow_cmd_full (name, theclass, var_zuinteger, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
@@ -847,7 +856,7 @@ delete_cmd (const char *name, struct cmd_list_element **list,
 struct cmd_list_element *
 add_info (const char *name, cmd_cfunc_ftype *fun, const char *doc)
 {
 struct cmd_list_element *
 add_info (const char *name, cmd_cfunc_ftype *fun, const char *doc)
 {
-  return add_cmd (name, no_class, fun, doc, &infolist);
+  return add_cmd (name, class_info, fun, doc, &infolist);
 }
 
 /* Add an alias to the list of info subcommands.  */
 }
 
 /* Add an alias to the list of info subcommands.  */
@@ -855,27 +864,42 @@ add_info (const char *name, cmd_cfunc_ftype *fun, const char *doc)
 struct cmd_list_element *
 add_info_alias (const char *name, const char *oldname, int abbrev_flag)
 {
 struct cmd_list_element *
 add_info_alias (const char *name, const char *oldname, int abbrev_flag)
 {
-  return add_alias_cmd (name, oldname, 0, abbrev_flag, &infolist);
+  return add_alias_cmd (name, oldname, class_run, abbrev_flag, &infolist);
 }
 
 /* Add an element to the list of commands.  */
 
 struct cmd_list_element *
 }
 
 /* Add an element to the list of commands.  */
 
 struct cmd_list_element *
-add_com (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
+add_com (const char *name, enum command_class theclass, cmd_cfunc_ftype *fun,
         const char *doc)
 {
         const char *doc)
 {
-  return add_cmd (name, class, fun, doc, &cmdlist);
+  return add_cmd (name, theclass, fun, doc, &cmdlist);
 }
 
 /* Add an alias or abbreviation command to the list of commands.  */
 
 struct cmd_list_element *
 }
 
 /* Add an alias or abbreviation command to the list of commands.  */
 
 struct cmd_list_element *
-add_com_alias (const char *name, const char *oldname, enum command_class class,
+add_com_alias (const char *name, const char *oldname, enum command_class theclass,
               int abbrev_flag)
 {
               int abbrev_flag)
 {
-  return add_alias_cmd (name, oldname, class, abbrev_flag, &cmdlist);
+  return add_alias_cmd (name, oldname, theclass, abbrev_flag, &cmdlist);
 }
 }
-\f
+
+/* Add an element with a suppress notification to the list of commands.  */
+
+struct cmd_list_element *
+add_com_suppress_notification (const char *name, enum command_class theclass,
+                              cmd_cfunc_ftype *fun, const char *doc,
+                              int *suppress_notification)
+{
+  struct cmd_list_element *element;
+
+  element = add_cmd (name, theclass, fun, doc, &cmdlist);
+  element->suppress_notification = suppress_notification;
+
+  return element;
+}
+
 /* Recursively walk the commandlist structures, and print out the
    documentation of commands that match our regex in either their
    name, or their documentation.
 /* Recursively walk the commandlist structures, and print out the
    documentation of commands that match our regex in either their
    name, or their documentation.
@@ -982,7 +1006,7 @@ help_cmd (const char *command, struct ui_file *stream)
 
   /* If this is a class name, print all of the commands in the class.  */
   if (c->func == NULL)
 
   /* If this is a class name, print all of the commands in the class.  */
   if (c->func == NULL)
-    help_list (cmdlist, "", c->class, stream);
+    help_list (cmdlist, "", c->theclass, stream);
 
   if (c->hook_pre || c->hook_post)
     fprintf_filtered (stream,
 
   if (c->hook_pre || c->hook_post)
     fprintf_filtered (stream,
@@ -1012,7 +1036,7 @@ help_cmd (const char *command, struct ui_file *stream)
  */
 void
 help_list (struct cmd_list_element *list, const char *cmdtype,
  */
 void
 help_list (struct cmd_list_element *list, const char *cmdtype,
-          enum command_class class, struct ui_file *stream)
+          enum command_class theclass, struct ui_file *stream)
 {
   int len;
   char *cmdtype1, *cmdtype2;
 {
   int len;
   char *cmdtype1, *cmdtype2;
@@ -1033,14 +1057,14 @@ help_list (struct cmd_list_element *list, const char *cmdtype,
       strcpy (cmdtype2 + len - 1, " sub");
     }
 
       strcpy (cmdtype2 + len - 1, " sub");
     }
 
-  if (class == all_classes)
+  if (theclass == all_classes)
     fprintf_filtered (stream, "List of classes of %scommands:\n\n", cmdtype2);
   else
     fprintf_filtered (stream, "List of %scommands:\n\n", cmdtype2);
 
     fprintf_filtered (stream, "List of classes of %scommands:\n\n", cmdtype2);
   else
     fprintf_filtered (stream, "List of %scommands:\n\n", cmdtype2);
 
-  help_cmd_list (list, class, cmdtype, (int) class >= 0, stream);
+  help_cmd_list (list, theclass, cmdtype, (int) theclass >= 0, stream);
 
 
-  if (class == all_classes)
+  if (theclass == all_classes)
     {
       fprintf_filtered (stream, "\n\
 Type \"help%s\" followed by a class name for a list of commands in ",
     {
       fprintf_filtered (stream, "\n\
 Type \"help%s\" followed by a class name for a list of commands in ",
@@ -1082,7 +1106,7 @@ help_all (struct ui_file *stream)
       if (c->func == NULL)
        {
          fprintf_filtered (stream, "\nCommand class: %s\n\n", c->name);
       if (c->func == NULL)
        {
          fprintf_filtered (stream, "\nCommand class: %s\n\n", c->name);
-         help_cmd_list (cmdlist, c->class, "", 1, stream);
+         help_cmd_list (cmdlist, c->theclass, "", 1, stream);
        }
     }
 
        }
     }
 
@@ -1095,7 +1119,7 @@ help_all (struct ui_file *stream)
       if (c->abbrev_flag)
         continue;
 
       if (c->abbrev_flag)
         continue;
 
-      if (c->class == no_class)
+      if (c->theclass == no_class)
        {
          if (!seen_unclassified)
            {
        {
          if (!seen_unclassified)
            {
@@ -1167,7 +1191,7 @@ print_help_for_command (struct cmd_list_element *c, const char *prefix,
  * all sublists of LIST.
  * PREFIX is the prefix to print before each command name.
  * STREAM is the stream upon which the output should be written.
  * all sublists of LIST.
  * PREFIX is the prefix to print before each command name.
  * STREAM is the stream upon which the output should be written.
- * CLASS should be:
+ * THECLASS should be:
  *      A non-negative class number to list only commands in that
  * class.
  *      ALL_COMMANDS to list all commands in list.
  *      A non-negative class number to list only commands in that
  * class.
  *      ALL_COMMANDS to list all commands in list.
@@ -1178,24 +1202,27 @@ print_help_for_command (struct cmd_list_element *c, const char *prefix,
  * is at the low level, not the high-level).
  */
 void
  * is at the low level, not the high-level).
  */
 void
-help_cmd_list (struct cmd_list_element *list, enum command_class class,
+help_cmd_list (struct cmd_list_element *list, enum command_class theclass,
               const char *prefix, int recurse, struct ui_file *stream)
 {
   struct cmd_list_element *c;
 
   for (c = list; c; c = c->next)
               const char *prefix, int recurse, struct ui_file *stream)
 {
   struct cmd_list_element *c;
 
   for (c = list; c; c = c->next)
-    {      
+    {
       if (c->abbrev_flag == 0
       if (c->abbrev_flag == 0
-         && (class == all_commands
-             || (class == all_classes && c->func == NULL)
-             || (class == c->class && c->func != NULL)))
+         && !c->cmd_deprecated
+         && (theclass == all_commands
+             || (theclass == all_classes && c->func == NULL)
+             || (theclass == c->theclass && c->func != NULL)))
        {
          print_help_for_command (c, prefix, recurse, stream);
        }
        {
          print_help_for_command (c, prefix, recurse, stream);
        }
-      else if (c->abbrev_flag == 0 && recurse
-              && class == class_user && c->prefixlist != NULL)
+      else if (c->abbrev_flag == 0
+              && recurse
+              && !c->cmd_deprecated
+              && theclass == class_user && c->prefixlist != NULL)
        /* User-defined commands may be subcommands.  */
        /* User-defined commands may be subcommands.  */
-       help_cmd_list (*c->prefixlist, class, c->prefixname, 
+       help_cmd_list (*c->prefixlist, theclass, c->prefixname,
                       recurse, stream);
     }
 }
                       recurse, stream);
     }
 }
@@ -1211,7 +1238,7 @@ find_cmd (const char *command, int len, struct cmd_list_element *clist,
 {
   struct cmd_list_element *found, *c;
 
 {
   struct cmd_list_element *found, *c;
 
-  found = (struct cmd_list_element *) NULL;
+  found = NULL;
   *nfound = 0;
   for (c = clist; c; c = c->next)
     if (!strncmp (command, c->name, len)
   *nfound = 0;
   for (c = clist; c; c = c->next)
     if (!strncmp (command, c->name, len)
@@ -1228,7 +1255,9 @@ find_cmd (const char *command, int len, struct cmd_list_element *clist,
   return found;
 }
 
   return found;
 }
 
-static int
+/* Return the length of command name in TEXT.  */
+
+int
 find_command_name_length (const char *text)
 {
   const char *p = text;
 find_command_name_length (const char *text)
 {
   const char *p = text;
@@ -1239,11 +1268,6 @@ find_command_name_length (const char *text)
   /* Some characters are only used for TUI specific commands.
      However, they are always allowed for the sake of consistency.
 
   /* Some characters are only used for TUI specific commands.
      However, they are always allowed for the sake of consistency.
 
-     The XDB compatibility characters are only allowed when using the
-     right mode because they clash with other GDB commands -
-     specifically '/' is used as a suffix for print, examine and
-     display.
-
      Note that this is larger than the character set allowed when
      creating user-defined commands.  */
 
      Note that this is larger than the character set allowed when
      creating user-defined commands.  */
 
@@ -1254,9 +1278,7 @@ find_command_name_length (const char *text)
 
   while (isalnum (*p) || *p == '-' || *p == '_'
         /* Characters used by TUI specific commands.  */
 
   while (isalnum (*p) || *p == '-' || *p == '_'
         /* Characters used by TUI specific commands.  */
-        || *p == '+' || *p == '<' || *p == '>' || *p == '$'
-        /* Characters used for XDB compatibility.  */
-        || (xdb_commands && (*p == '/' || *p == '?')))
+        || *p == '+' || *p == '<' || *p == '>' || *p == '$')
     p++;
 
   return p - text;
     p++;
 
   return p - text;
@@ -1311,7 +1333,7 @@ valid_user_defined_cmd_name_p (const char *name)
    if no prefix command was ever found.  For example, in the case of "info a",
    "info" matches without ambiguity, but "a" could be "args" or "address", so
    *RESULT_LIST is set to the cmd_list_element for "info".  So in this case
    if no prefix command was ever found.  For example, in the case of "info a",
    "info" matches without ambiguity, but "a" could be "args" or "address", so
    *RESULT_LIST is set to the cmd_list_element for "info".  So in this case
-   RESULT_LIST should not be interpeted as a pointer to the beginning of a
+   RESULT_LIST should not be interpreted as a pointer to the beginning of a
    list; it simply points to a specific command.  In the case of an ambiguous
    return *TEXT is advanced past the last non-ambiguous prefix (e.g.
    "info t" can be "info types" or "info target"; upon return *TEXT has been
    list; it simply points to a specific command.  In the case of an ambiguous
    return *TEXT is advanced past the last non-ambiguous prefix (e.g.
    "info t" can be "info types" or "info target"; upon return *TEXT has been
@@ -1358,19 +1380,6 @@ lookup_cmd_1 (const char **text, struct cmd_list_element *clist,
   nfound = 0;
   found = find_cmd (command, len, clist, ignore_help_classes, &nfound);
 
   nfound = 0;
   found = find_cmd (command, len, clist, ignore_help_classes, &nfound);
 
-  /* We didn't find the command in the entered case, so lower case it
-     and search again.  */
-  if (!found || nfound == 0)
-    {
-      for (tmp = 0; tmp < len; tmp++)
-       {
-         char x = command[tmp];
-
-         command[tmp] = isupper (x) ? tolower (x) : x;
-       }
-      found = find_cmd (command, len, clist, ignore_help_classes, &nfound);
-    }
-
   /* If nothing matches, we have a simple failure.  */
   if (nfound == 0)
     return 0;
   /* If nothing matches, we have a simple failure.  */
   if (nfound == 0)
     return 0;
@@ -1711,20 +1720,6 @@ lookup_cmd_composition (const char *text,
       nfound = 0;
       *cmd = find_cmd (command, len, cur_list, 1, &nfound);
       
       nfound = 0;
       *cmd = find_cmd (command, len, cur_list, 1, &nfound);
       
-      /* We didn't find the command in the entered case, so lower case
-        it and search again.
-      */
-      if (!*cmd || nfound == 0)
-       {
-         for (tmp = 0; tmp < len; tmp++)
-           {
-             char x = command[tmp];
-
-             command[tmp] = isupper (x) ? tolower (x) : x;
-           }
-         *cmd = find_cmd (command, len, cur_list, 1, &nfound);
-       }
-      
       if (*cmd == CMD_LIST_AMBIGUOUS)
        {
          return 0;              /* ambiguous */
       if (*cmd == CMD_LIST_AMBIGUOUS)
        {
          return 0;              /* ambiguous */
@@ -1881,7 +1876,26 @@ void
 cmd_func (struct cmd_list_element *cmd, char *args, int from_tty)
 {
   if (cmd_func_p (cmd))
 cmd_func (struct cmd_list_element *cmd, char *args, int from_tty)
 {
   if (cmd_func_p (cmd))
-    (*cmd->func) (cmd, args, from_tty);
+    {
+      struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
+
+      if (cmd->suppress_notification != NULL)
+       {
+         make_cleanup_restore_integer (cmd->suppress_notification);
+         *cmd->suppress_notification = 1;
+       }
+
+      (*cmd->func) (cmd, args, from_tty);
+
+      do_cleanups (cleanups);
+    }
   else
     error (_("Invalid command"));
 }
   else
     error (_("Invalid command"));
 }
+
+int
+cli_user_command_p (struct cmd_list_element *cmd)
+{
+  return (cmd->theclass == class_user
+         && (cmd->func == do_cfunc || cmd->func == do_sfunc));
+}
This page took 0.034636 seconds and 4 git commands to generate.