This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: FYI: fix PR gdb/8869


On Saturday 08 August 2009 17:17:28, Pedro Alves wrote:
> On Saturday 08 August 2009 14:43:58, Pedro Alves wrote:
> > On Saturday 08 August 2009 00:28:00, Tom Tromey wrote:
> > > >>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
> > > 
> > > Tom> Sigh.
> > > Tom> I'll fix soon.
> > > 
> > > Ok, here is an update to strip trailing whitespace.  This time with some
> > > tests.
> > 
> > Thanks!
> > 
> > > This is kind of ugly.
> > 
> > Indeed.  :-)
> > 
> > > I did remember a problem with using a real enum for set language -- the
> > > languages aren't all registered when _initialize_language is called.
> > 
> > I think it would work to (re-)register the command in add_language
> > instead, whenever a new language is added.
> > 
> 
> Like below.  This was probably what Cagney had in mind with
> the "FIXME: make these enum commands".  Notice how set_case_str, set_type_str,
> set_range_str and set_lang_str go away.  This kills a few more usages of
> deprecated_show_value_hack.  No need to strip trailing whitespace.
> One issue is that "set language" without an argument doesn't show that
> larger help list of known languages, because the enum command machinary
> takes care of handling the case of no argument itself.  I've moved that
> listing to "help set language", which I think is a better place for it
> anyway.  
> 
>  (gdb) set language
>  Requires an argument. Valid arguments are auto, local, unknown, ada, c, c++, asm, minimal, fortran, objective-c, java, modula-2, pascal, scheme.
>  (gdb) help set language
>  Set the current source language.
>  The currently understood settings are:
> 
>  local or auto    Automatic setting based on source file
>  ada              Use the Ada language
>  c                Use the C language
>  c++              Use the C++ language
>  asm              Use the Asm language
>  minimal          Use the Minimal language
>  fortran          Use the Fortran language
>  objective-c      Use the Objective-c language
>  java             Use the Java language
>  modula-2         Use the Modula-2 language
>  pascal           Use the Pascal language
>  scheme           Use the Scheme language
> 
>  (gdb) 
> 
> This required a couple of testsuite adjustments to default.exp
> and help.exp.  I diffed the log of running setshow.exp, and the only
> differences that came out were "Warning" vs "warning".  This is due
> to the patch changing a few printf_unfiltered("Warning:..." calls
> to warning(_("... calls.  More consistency, and, added i18n.
> 
> No regressions on x86_64-unknown-linux-gnu.  Let me know what
> you think.
> 

Small update.  This also deletes the the range, type and case completers that
aren't needed anymore, and plugs a leak I was introducing (mem_fileopen).

-- 
Pedro Alves

2009-08-08  Pedro Alves  <pedro@codesourcery.com>

	* language.c (language, type, range, case_sensitive): Make const.
	(show_language_command): Don't call deprecated_show_value_hack.
	Special case "auto".
	(set_language_command): Don't strip trailing whitespace.  Don't
	print list of known languages.  An unrecognized language is now an
	internal error instead of a user error.  Don't call set_lang_str.
	(language_completer): Delete.
	(show_type_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_type_command): Don't strip trailing whitespace.  An
	unrecognized type is now an internal error instead of a user
	error.  Output type check mismatch with language here.  Don't call
	set_type_str.
	(show_range_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_range_command): Don't strip trailing whitespace.  An
	unrecognized range check is now an internal error instead of a
	warning.  Output range check mismatch with language here.  Don't
	call set_range_str.
	(range_or_type_completer): Delete.
	(show_case_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_case_command): Don't call set_case_str.  An unrecognized case
	check is now an internal error instead of a warning.  Output range
	check mismatch with language here.  Don't call set_case_str.
	(case_completer): Delete.
	(set_type_range_case): Don't call set_type_str, set_range_str or
	set_case_str here.
	(set_lang_str, set_type_str, set_range_str, set_case_str): Delete.
	(add_language): Install or reinstall the "set language" command
	here, and make it an enum command.  Build the enumeration and the
	help string from the current list of known languages.
	(_initialize_language): Don't install "set language" here.  Make
	"set check type", "set check range" and "set case-sensitive" enum
	commands.  No need for special completers.  Register the "auto"
	"local" and "unknown" languages in that order.

2009-08-08  Pedro Alves  <pedro@codesourcery.com>

	* gdb.base/default.exp: Adjust "set language test": it's now an
	enum command.  Larger help string moved to "help set language".
	* gdb.base/help.exp: Adjust "help set language" expected output,
	now lists all known languages.

---
 gdb/language.c                     |  490 +++++++++++++++----------------------
 gdb/testsuite/gdb.base/default.exp |    2 
 gdb/testsuite/gdb.base/help.exp    |    3 
 3 files changed, 209 insertions(+), 286 deletions(-)

Index: src/gdb/language.c
===================================================================
--- src.orig/gdb/language.c	2009-08-08 17:24:33.000000000 +0100
+++ src/gdb/language.c	2009-08-08 17:45:38.000000000 +0100
@@ -47,14 +47,6 @@
 
 extern void _initialize_language (void);
 
-static void set_case_str (void);
-
-static void set_range_str (void);
-
-static void set_type_str (void);
-
-static void set_lang_str (void);
-
 static void unk_lang_error (char *);
 
 static int unk_lang_parser (void);
@@ -111,16 +103,12 @@ static unsigned languages_size;
 static unsigned languages_allocsize;
 #define	DEFAULT_ALLOCSIZE 4
 
-/* The "set language/type/range" commands all put stuff in these
-   buffers.  This is to make them work as set/show commands.  The
-   user's string is copied here, then the set_* commands look at
-   them and update them to something that looks nice when it is
-   printed out. */
-
-static char *language;
-static char *type;
-static char *range;
-static char *case_sensitive;
+/* The current values of the "set language/type/range" enum
+   commands.  */
+static const char *language;
+static const char *type;
+static const char *range;
+static const char *case_sensitive;
 
 /* Warning issued when current_language and the language of the current
    frame do not match. */
@@ -138,7 +126,15 @@ show_language_command (struct ui_file *f
 {
   enum language flang;		/* The language of the current frame */
 
-  deprecated_show_value_hack (file, from_tty, c, value);
+  if (language_mode == language_mode_auto)
+    fprintf_filtered (gdb_stdout,
+		      _("The current source language is "
+			"\"auto; currently %s\".\n"),
+		      current_language->la_name);
+  else
+    fprintf_filtered (gdb_stdout, _("The current source language is \"%s\".\n"),
+		      current_language->la_name);
+
   flang = get_frame_language ();
   if (flang != language_unknown &&
       language_mode == language_mode_manual &&
@@ -150,51 +146,9 @@ show_language_command (struct ui_file *f
 static void
 set_language_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int i, len;
+  int i;
   enum language flang;
-  char *err_lang, *tem;
-
-  /* Strip trailing whitespace.  */
-  if (!language)
-    len = 0;
-  else
-    {
-      len = strlen (language);
-      while (len > 0 && language[len - 1] == ' ')
-	--len;
-    }
-
-  if (len == 0)
-    {
-      printf_unfiltered (_("\
-The currently understood settings are:\n\n\
-local or auto    Automatic setting based on source file\n"));
-
-      for (i = 0; i < languages_size; ++i)
-	{
-	  /* Already dealt with these above.  */
-	  if (languages[i]->la_language == language_unknown
-	      || languages[i]->la_language == language_auto)
-	    continue;
-
-	  /* FIXME: i18n: for now assume that the human-readable name
-	     is just a capitalization of the internal name.  */
-	  printf_unfiltered ("%-16s Use the %c%s language\n",
-			     languages[i]->la_name,
-	  /* Capitalize first letter of language
-	     name.  */
-			     toupper (languages[i]->la_name[0]),
-			     languages[i]->la_name + 1);
-	}
-      /* Restore the silly string. */
-      set_language (current_language->la_language);
-      return;
-    }
-
-  /* Reset LANGUAGE to avoid trailing spaces.  */
-  tem = savestring (language, len);
-  xfree (language);
-  language = tem;
+  char *err_lang;
 
   /* Search the list of languages for a match.  */
   for (i = 0; i < languages_size; i++)
@@ -221,33 +175,15 @@ local or auto    Automatic setting based
 	      language_mode = language_mode_manual;
 	      current_language = languages[i];
 	      set_type_range_case ();
-	      set_lang_str ();
 	      expected_language = current_language;
 	      return;
 	    }
 	}
     }
 
-  /* Reset the language (esp. the global string "language") to the 
-     correct values. */
-  err_lang = xstrdup (language);
-  make_cleanup (xfree, err_lang);	/* Free it after error */
-  set_language (current_language->la_language);
-  error (_("Unknown language `%s'."), err_lang);
-}
-
-static char **
-language_completer (struct cmd_list_element *self, char *text, char *word)
-{
-  int i;
-  const char **langnames
-    = (const char **) alloca ((languages_size + 1) * sizeof (const char *));
-
-  for (i = 0; i < languages_size; ++i)
-    langnames[i] = languages[i]->la_name;
-  langnames[i] = NULL;
-
-  return complete_on_enum (langnames, text, word);
+  internal_error (__FILE__, __LINE__,
+		  "Couldn't find language `%s' in known languages list.",
+		  language);
 }
 
 /* Show command.  Display a warning if the type setting does
@@ -256,28 +192,43 @@ static void
 show_type_command (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, value);
+  if (type_mode == type_mode_auto)
+    {
+      char *tmp = NULL;
+
+      switch (type_check)
+	{
+	case type_check_on:
+	  tmp = "on";
+	  break;
+	case type_check_off:
+	  tmp = "off";
+	  break;
+	case type_check_warn:
+	  tmp = "warn";
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  "Unrecognized type check setting.");
+	}
+
+      fprintf_filtered (gdb_stdout,
+			_("Type checking is \"auto; currently %s\".\n"),
+			tmp);
+    }
+  else
+    fprintf_filtered (gdb_stdout, _("Type checking is \"%s\".\n"),
+		      value);
+
   if (type_check != current_language->la_type_check)
-    printf_unfiltered (
-			"Warning: the current type check setting does not match the language.\n");
+    warning (_("the current type check setting"
+	       " does not match the language.\n"));
 }
 
 /* Set command.  Change the setting for type checking. */
 static void
 set_type_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int len;
-  char *tem;
-
-  /* Strip trailing whitespace.  */
-  len = strlen (type);
-  while (len > 0 && type[len - 1] == ' ')
-    --len;
-  /* Reset TYPE.  */
-  tem = savestring (type, len);
-  xfree (type);
-  type = tem;
-
   if (strcmp (type, "on") == 0)
     {
       type_check = type_check_on;
@@ -297,16 +248,15 @@ set_type_command (char *ignore, int from
     {
       type_mode = type_mode_auto;
       set_type_range_case ();
-      /* Avoid hitting the set_type_str call below.  We
-         did it in set_type_range_case. */
       return;
     }
   else
-    {
-      warning (_("Unrecognized type check setting: \"%s\""), type);
-    }
-  set_type_str ();
-  show_type_command (NULL, from_tty, NULL, NULL);
+    internal_error (__FILE__, __LINE__,
+		    _("Unrecognized type check setting: \"%s\""), type);
+
+  if (type_check != current_language->la_type_check)
+    warning (_("the current type check setting"
+	       " does not match the language.\n"));
 }
 
 /* Show command.  Display a warning if the range setting does
@@ -315,28 +265,43 @@ static void
 show_range_command (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, value);
+  if (range_mode == range_mode_auto)
+    {
+      char *tmp;
+
+      switch (range_check)
+	{
+	case range_check_on:
+	  tmp = "on";
+	  break;
+	case range_check_off:
+	  tmp = "off";
+	  break;
+	case range_check_warn:
+	  tmp = "warn";
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  "Unrecognized range check setting.");
+	}
+
+      fprintf_filtered (gdb_stdout,
+			_("Range checking is \"auto; currently %s\".\n"),
+			tmp);
+    }
+  else
+    fprintf_filtered (gdb_stdout, _("Range checking is \"%s\".\n"),
+		      value);
+
   if (range_check != current_language->la_range_check)
-    printf_unfiltered (
-			"Warning: the current range check setting does not match the language.\n");
+    warning (_("the current range check setting "
+	       "does not match the language.\n"));
 }
 
 /* Set command.  Change the setting for range checking. */
 static void
 set_range_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int len;
-  char *tem;
-
-  /* Strip trailing whitespace.  */
-  len = strlen (range);
-  while (len > 0 && range[len - 1] == ' ')
-    --len;
-  /* Reset RANGE.  */
-  tem = savestring (range, len);
-  xfree (range);
-  range = tem;
-
   if (strcmp (range, "on") == 0)
     {
       range_check = range_check_on;
@@ -356,24 +321,17 @@ set_range_command (char *ignore, int fro
     {
       range_mode = range_mode_auto;
       set_type_range_case ();
-      /* Avoid hitting the set_range_str call below.  We
-         did it in set_type_range_case. */
       return;
     }
   else
     {
-      warning (_("Unrecognized range check setting: \"%s\""), range);
+      internal_error (__FILE__, __LINE__,
+		      _("Unrecognized range check setting: \"%s\""), range);
     }
-  set_range_str ();
-  show_range_command (NULL, from_tty, NULL, NULL);
-}
 
-/* Completer for range and type parameters.  */
-static char **
-range_or_type_completer (struct cmd_list_element *self, char *text, char *word)
-{
-  static const char *values[] = { "on", "off", "warn", "auto", NULL };
-  return complete_on_enum (values, text, word);
+  if (range_check != current_language->la_range_check)
+    warning (_("the current range check setting "
+	       "does not match the language.\n"));
 }
 
 /* Show command.  Display a warning if the case sensitivity setting does
@@ -382,10 +340,35 @@ static void
 show_case_command (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, value);
+  if (case_mode == case_mode_auto)
+    {
+      char *tmp = NULL;
+
+      switch (case_sensitivity)
+	{
+	case case_sensitive_on:
+	  tmp = "on";
+	  break;
+	case case_sensitive_off:
+	  tmp = "off";
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  "Unrecognized case-sensitive setting.");
+	}
+
+      fprintf_filtered (gdb_stdout,
+			_("Case sensitivity in "
+			  "name search is \"auto; currently %s\".\n"),
+			tmp);
+    }
+  else
+    fprintf_filtered (gdb_stdout, _("Case sensitivity in name search is \"%s\".\n"),
+		      value);
+
   if (case_sensitivity != current_language->la_case_sensitivity)
-    printf_unfiltered(
-"Warning: the current case sensitivity setting does not match the language.\n");
+    warning (_("the current case sensitivity setting does not match "
+	       "the language.\n"));
 }
 
 /* Set command.  Change the setting for case sensitivity.  */
@@ -407,25 +390,18 @@ set_case_command (char *ignore, int from
      {
        case_mode = case_mode_auto;
        set_type_range_case ();
-       /* Avoid hitting the set_case_str call below.  We did it in
-	  set_type_range_case.  */
        return;
      }
    else
      {
-       warning (_("Unrecognized case-sensitive setting: \"%s\""),
-		case_sensitive);
+       internal_error (__FILE__, __LINE__,
+		       "Unrecognized case-sensitive setting: \"%s\"",
+		       case_sensitive);
      }
-   set_case_str();
-   show_case_command (NULL, from_tty, NULL, NULL);
-}
 
-/* Completer for case-sensitive parameter.  */
-static char **
-case_completer (struct cmd_list_element *self, char *text, char *word)
-{
-  static const char *values[] = { "on", "off", "auto", NULL };
-  return complete_on_enum (values, text, word);
+  if (case_sensitivity != current_language->la_case_sensitivity)
+    warning (_("the current case sensitivity setting does not match "
+	       "the language.\n"));
 }
 
 /* Set the status of range and type checking and case sensitivity based on
@@ -435,7 +411,6 @@ case_completer (struct cmd_list_element 
 static void
 set_type_range_case (void)
 {
-
   if (range_mode == range_mode_auto)
     range_check = current_language->la_range_check;
 
@@ -444,10 +419,6 @@ set_type_range_case (void)
 
   if (case_mode == case_mode_auto)
     case_sensitivity = current_language->la_case_sensitivity;
-
-  set_type_str ();
-  set_range_str ();
-  set_case_str ();
 }
 
 /* Set current language to (enum language) LANG.  Returns previous language. */
@@ -466,7 +437,6 @@ set_language (enum language lang)
 	{
 	  current_language = languages[i];
 	  set_type_range_case ();
-	  set_lang_str ();
 	  break;
 	}
     }
@@ -474,100 +444,6 @@ set_language (enum language lang)
   return prev_language;
 }
 
-/* This page contains functions that update the global vars
-   language, type and range. */
-static void
-set_lang_str (void)
-{
-  char *prefix = "";
-
-  if (language)
-    xfree (language);
-  if (language_mode == language_mode_auto)
-    prefix = "auto; currently ";
-
-  language = concat (prefix, current_language->la_name, (char *)NULL);
-}
-
-static void
-set_type_str (void)
-{
-  char *tmp = NULL, *prefix = "";
-
-  if (type)
-    xfree (type);
-  if (type_mode == type_mode_auto)
-    prefix = "auto; currently ";
-
-  switch (type_check)
-    {
-    case type_check_on:
-      tmp = "on";
-      break;
-    case type_check_off:
-      tmp = "off";
-      break;
-    case type_check_warn:
-      tmp = "warn";
-      break;
-    default:
-      error (_("Unrecognized type check setting."));
-    }
-
-  type = concat (prefix, tmp, (char *)NULL);
-}
-
-static void
-set_range_str (void)
-{
-  char *tmp, *pref = "";
-
-  if (range_mode == range_mode_auto)
-    pref = "auto; currently ";
-
-  switch (range_check)
-    {
-    case range_check_on:
-      tmp = "on";
-      break;
-    case range_check_off:
-      tmp = "off";
-      break;
-    case range_check_warn:
-      tmp = "warn";
-      break;
-    default:
-      error (_("Unrecognized range check setting."));
-    }
-
-  if (range)
-    xfree (range);
-  range = concat (pref, tmp, (char *)NULL);
-}
-
-static void
-set_case_str (void)
-{
-   char *tmp = NULL, *prefix = "";
-
-   if (case_mode==case_mode_auto)
-      prefix = "auto; currently ";
-
-   switch (case_sensitivity)
-   {
-   case case_sensitive_on:
-     tmp = "on";
-     break;
-   case case_sensitive_off:
-     tmp = "off";
-     break;
-   default:
-     error (_("Unrecognized case-sensitive setting."));
-   }
-
-   xfree (case_sensitive);
-   case_sensitive = concat (prefix, tmp, (char *)NULL);
-}
 
 /* Print out the current language settings: language, range and
    type checking.  If QUIETLY, print only what has changed.  */
@@ -1007,6 +883,15 @@ show_check (char *ignore, int from_tty)
 void
 add_language (const struct language_defn *lang)
 {
+  /* For the "set language" command.  */
+  static char **language_names = NULL;
+  /* For the "help set language" command.  */
+  static char *language_set_doc = NULL;
+
+  int i;
+  struct ui_file *tmp_stream;
+  long len;
+
   if (lang->la_magic != LANG_MAGIC)
     {
       fprintf_unfiltered (gdb_stderr, "Magic number of %s language struct wrong\n",
@@ -1027,6 +912,52 @@ add_language (const struct language_defn
 				 languages_allocsize * sizeof (*languages));
     }
   languages[languages_size++] = lang;
+
+  /* Build the language names array, to be used as enumeration in the
+     set language" enum command.  */
+  language_names = xrealloc (language_names,
+			     (languages_size + 1) * sizeof (const char *));
+  for (i = 0; i < languages_size; ++i)
+    language_names[i] = languages[i]->la_name;
+  language_names[i] = NULL;
+
+  /* Build the "help set language" docs.  */
+  tmp_stream = mem_fileopen ();
+
+  fprintf_unfiltered (tmp_stream, _("\
+Set the current source language.\n\
+The currently understood settings are:\n\n\
+local or auto    Automatic setting based on source file\n"));
+
+  for (i = 0; i < languages_size; ++i)
+    {
+      /* Already dealt with these above.  */
+      if (languages[i]->la_language == language_unknown
+	  || languages[i]->la_language == language_auto)
+	continue;
+
+      /* FIXME: i18n: for now assume that the human-readable name
+	 is just a capitalization of the internal name.  */
+      fprintf_unfiltered (tmp_stream, "%-16s Use the %c%s language\n",
+			  languages[i]->la_name,
+			  /* Capitalize first letter of language
+			     name.  */
+			  toupper (languages[i]->la_name[0]),
+			  languages[i]->la_name + 1);
+    }
+
+  xfree (language_set_doc);
+  language_set_doc = ui_file_xstrdup (tmp_stream, &len);
+  ui_file_delete (tmp_stream);
+
+  add_setshow_enum_cmd ("language", class_support,
+			(const char **) language_names,
+			&language,
+			language_set_doc, _("\
+Show the current source language."), NULL,
+			set_language_command,
+			show_language_command,
+			&setlist, &showlist);
 }
 
 /* Iterate through all registered languages looking for and calling
@@ -1409,22 +1340,16 @@ language_lookup_primitive_type_by_name (
 void
 _initialize_language (void)
 {
-  struct cmd_list_element *command;
+  static const char *type_or_range_names[]
+    = { "on", "off", "warn", "auto", NULL };
+
+  static const char *case_sensitive_names[] = { "on", "off", "auto", NULL };
 
   language_gdbarch_data
     = gdbarch_data_register_post_init (language_gdbarch_post_init);
 
   /* GDB commands for language specific stuff */
 
-  command = add_setshow_string_noescape_cmd ("language", class_support,
-					     &language, _("\
-Set the current source language."), _("\
-Show the current source language."), NULL,
-					     set_language_command,
-					     show_language_command,
-					     &setlist, &showlist);
-  set_cmd_completer (command, language_completer);
-
   add_prefix_cmd ("check", no_class, set_check,
 		  _("Set the status of the type/range checker."),
 		  &setchecklist, "set check ", 0, &setlist);
@@ -1437,40 +1362,37 @@ Show the current source language."), NUL
   add_alias_cmd ("c", "check", no_class, 1, &showlist);
   add_alias_cmd ("ch", "check", no_class, 1, &showlist);
 
-  command =
-    add_setshow_string_noescape_cmd ("type", class_support,
-				     &type, _("\
+  add_setshow_enum_cmd ("type", class_support,
+			type_or_range_names,
+			&type, _("\
 Set type checking.  (on/warn/off/auto)"), _("\
 Show type checking.  (on/warn/off/auto)"), NULL,
-				     set_type_command,
-				     show_type_command,
-				     &setchecklist, &showchecklist);
-  set_cmd_completer (command, range_or_type_completer);
-
-  command =
-    add_setshow_string_noescape_cmd ("range", class_support,
-				     &range, _("\
+			set_type_command,
+			show_type_command,
+			&setchecklist, &showchecklist);
+
+  add_setshow_enum_cmd ("range", class_support,
+			type_or_range_names,
+			&range, _("\
 Set range checking.  (on/warn/off/auto)"), _("\
 Show range checking.  (on/warn/off/auto)"), NULL,
-				     set_range_command,
-				     show_range_command,
-				     &setchecklist, &showchecklist);
-  set_cmd_completer (command, range_or_type_completer);
-
-  command =
-    add_setshow_string_noescape_cmd ("case-sensitive", class_support,
-				     &case_sensitive, _("\
+			set_range_command,
+			show_range_command,
+			&setchecklist, &showchecklist);
+
+  add_setshow_enum_cmd ("case-sensitive", class_support,
+			case_sensitive_names,
+			&case_sensitive, _("\
 Set case sensitivity in name search.  (on/off/auto)"), _("\
 Show case sensitivity in name search.  (on/off/auto)"), _("\
 For Fortran the default is off; for other languages the default is on."),
-				     set_case_command,
-				     show_case_command,
-				     &setlist, &showlist);
-  set_cmd_completer (command, case_completer);
+			set_case_command,
+			show_case_command,
+			&setlist, &showlist);
 
-  add_language (&unknown_language_defn);
-  add_language (&local_language_defn);
   add_language (&auto_language_defn);
+  add_language (&local_language_defn);
+  add_language (&unknown_language_defn);
 
   language = xstrdup ("auto");
   type = xstrdup ("auto");
Index: src/gdb/testsuite/gdb.base/default.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.base/default.exp	2009-08-08 17:24:33.000000000 +0100
+++ src/gdb/testsuite/gdb.base/default.exp	2009-08-08 17:39:49.000000000 +0100
@@ -530,7 +530,7 @@ gdb_test "set history size" "Argument re
 #test set history
 gdb_test "set history" "\"set history\" must be followed by the name of a history subcommand.(\[^\r\n\]*\[\r\n\])+List of set history subcommands:(\[^\r\n\]*\[\r\n\])+set history expansion -- Set history expansion on command input(\[^\r\n\]*\[\r\n\])+set history filename -- Set the filename in which to record the command history(\[^\r\n\]*\[\r\n\])+set history save -- Set saving of the history record on exit(\[^\r\n\]*\[\r\n\])+set history size -- Set the size of the command history(\[^\r\n\]*\[\r\n\])+Type \"help set history\" followed by set history subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set history"
 #test set language
-gdb_test "set language" "The currently understood settings are:(\[^\r\n\]*\[\r\n\])+local or auto  *Automatic setting based on source file(\[^\r\n\]*\[\r\n\])+c  *Use the C language(\[^\r\n\]*\[\r\n\])+c\[+\]+  *Use the C\[+\]+ language(\[^\r\n\]*\[\r\n\])+modula-2  *Use the Modula-2 language.*" "set language"
+gdb_test "set language" "Requires an argument. Valid arguments are auto, local, unknown, ada, c, c.., asm, minimal, fortran, objective-c, java, modula-2, pascal, scheme." "set language"
 #test set listsize
 gdb_test "set listsize" "Argument required .integer to set it to.*" "set listsize"
 #test set print "p" abbreviation
Index: src/gdb/testsuite/gdb.base/help.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.base/help.exp	2009-08-08 17:24:33.000000000 +0100
+++ src/gdb/testsuite/gdb.base/help.exp	2009-08-08 17:39:49.000000000 +0100
@@ -418,7 +418,8 @@ test_prefix_command_help {"set history"}
     "Generic command for setting command history parameters\.\[\r\n\]+"
 }
 # test help set language
-gdb_test "help set language" "Set the current source language\." "help set language"
+gdb_test "help set language" "Set the current source language\.\[\r\n\]+The currently understood settings are:(\[^\r\n\]*\[\r\n\])+local or auto  *Automatic setting based on source file(\[^\r\n\]*\[\r\n\])+c  *Use the C language(\[^\r\n\]*\[\r\n\])+c\[+\]+  *Use the C\[+\]+ language(\[^\r\n\]*\[\r\n\])+modula-2  *Use the Modula-2 language.*" "help set language"
+
 # test help set listsize
 gdb_test "help set listsize" "Set number of source lines gdb will list by default\." "help set listsize"
 # test help set print "p" abbreviation


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]