Command abbreviation in define
[deliverable/binutils-gdb.git] / gdb / cli / cli-decode.c
index c409d9c3d1cfd01abc35f964751468a2422f754b..4e302b7e8dea4e3926961261fa623d8cbad5b35b 100644 (file)
@@ -1,6 +1,6 @@
 /* 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
@@ -161,6 +161,15 @@ set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
   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
@@ -180,11 +189,10 @@ set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
    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)
 {
-  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
@@ -219,7 +227,7 @@ add_cmd (const char *name, enum command_class class, cmd_cfunc_ftype *fun,
     }
 
   c->name = name;
-  c->class = class;
+  c->theclass = theclass;
   set_cmd_cfunc (c, fun);
   set_cmd_context (c, NULL);
   c->doc = doc;
@@ -236,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->completer_handle_brkchars = NULL;
   c->destroyer = NULL;
   c->type = not_set_cmd;
   c->var = NULL;
@@ -244,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->suppress_notification = NULL;
 
   return c;
 }
@@ -273,7 +283,7 @@ deprecate_cmd (struct cmd_list_element *cmd, const char *replacement)
 }
 
 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;
@@ -296,7 +306,7 @@ add_alias_cmd (const char *name, const char *oldname, enum command_class class,
       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)
@@ -325,13 +335,13 @@ add_alias_cmd (const char *name, const char *oldname, enum command_class class,
    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)
 {
-  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;
@@ -353,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 *
-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)
 {
-  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;
@@ -393,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,
-                    enum command_class class,
+                    enum command_class theclass,
                     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;
@@ -422,7 +432,7 @@ add_set_or_show_cmd (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,
@@ -448,7 +458,7 @@ add_setshow_cmd_full (const char *name,
       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;
 
@@ -457,7 +467,7 @@ add_setshow_cmd_full (const char *name,
 
   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;
@@ -475,7 +485,7 @@ add_setshow_cmd_full (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,
@@ -488,7 +498,7 @@ add_setshow_enum_cmd (const char *name,
 {
   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,
@@ -504,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,
-                             enum command_class class,
+                             enum command_class theclass,
                              enum auto_boolean *var,
                              const char *set_doc, const char *show_doc,
                              const char *help_doc,
@@ -515,7 +525,7 @@ add_setshow_auto_boolean_cmd (const char *name,
 {
   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,
@@ -528,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_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,
@@ -539,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;
 
-  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,
@@ -550,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_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,
@@ -561,7 +571,7 @@ add_setshow_filename_cmd (const char *name, enum command_class class,
 {
   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,
@@ -572,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_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,
@@ -581,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)
 {
-  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,
@@ -591,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_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,
@@ -602,7 +612,7 @@ add_setshow_string_noescape_cmd (const char *name, enum command_class class,
 {
   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,
@@ -613,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_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,
@@ -624,7 +634,7 @@ add_setshow_optional_filename_cmd (const char *name, enum command_class class,
 {
   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,
@@ -656,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
-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,
@@ -667,7 +677,7 @@ add_setshow_integer_cmd (const char *name, enum command_class class,
 {
   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,
@@ -681,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_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,
@@ -692,7 +702,7 @@ add_setshow_uinteger_cmd (const char *name, enum command_class class,
 {
   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,
@@ -706,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_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,
@@ -715,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)
 {
-  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,
@@ -724,7 +734,7 @@ add_setshow_zinteger_cmd (const char *name, enum command_class class,
 
 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,
@@ -736,7 +746,7 @@ add_setshow_zuinteger_unlimited_cmd (const char *name,
 {
   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,
@@ -750,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_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,
@@ -759,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)
 {
-  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,
@@ -846,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)
 {
-  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.  */
@@ -854,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)
 {
-  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_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)
 {
-  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_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)
 {
-  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.
@@ -981,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)
-    help_list (cmdlist, "", c->class, stream);
+    help_list (cmdlist, "", c->theclass, stream);
 
   if (c->hook_pre || c->hook_post)
     fprintf_filtered (stream,
@@ -1011,7 +1036,7 @@ help_cmd (const char *command, struct ui_file *stream)
  */
 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;
@@ -1032,14 +1057,14 @@ help_list (struct cmd_list_element *list, const char *cmdtype,
       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);
 
-  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 ",
@@ -1081,7 +1106,7 @@ help_all (struct ui_file *stream)
       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);
        }
     }
 
@@ -1094,7 +1119,7 @@ help_all (struct ui_file *stream)
       if (c->abbrev_flag)
         continue;
 
-      if (c->class == no_class)
+      if (c->theclass == no_class)
        {
          if (!seen_unclassified)
            {
@@ -1166,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.
- * 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.
@@ -1177,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
-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)
-    {      
+    {
       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);
        }
-      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.  */
-       help_cmd_list (*c->prefixlist, class, c->prefixname, 
+       help_cmd_list (*c->prefixlist, theclass, c->prefixname,
                       recurse, stream);
     }
 }
@@ -1210,7 +1238,7 @@ find_cmd (const char *command, int len, struct cmd_list_element *clist,
 {
   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)
@@ -1227,7 +1255,9 @@ find_cmd (const char *command, int len, struct cmd_list_element *clist,
   return found;
 }
 
-static int
+/* Return the length of command name in TEXT.  */
+
+int
 find_command_name_length (const char *text)
 {
   const char *p = text;
@@ -1238,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.
 
-     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.  */
 
@@ -1253,9 +1278,7 @@ find_command_name_length (const char *text)
 
   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;
@@ -1310,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
-   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
@@ -1357,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);
 
-  /* 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;
@@ -1710,20 +1720,6 @@ lookup_cmd_composition (const char *text,
       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 */
@@ -1880,7 +1876,26 @@ void
 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"));
 }
+
+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.033904 seconds and 4 git commands to generate.