btrace: Replace struct btrace_function::segment.
[deliverable/binutils-gdb.git] / gdb / completer.c
index 45adc627dc44419647e35e3d07e410948fafb0a2..6acf115164fcf1c40756c9cd23364745a5e304aa 100644 (file)
@@ -84,29 +84,30 @@ char *line_completion_function (const char *text, int matches,
    readline library sees one in any of the current completion strings,
    it thinks that the string needs to be quoted and automatically
    supplies a leading quote.  */
-static char *gdb_completer_command_word_break_characters =
+static const char gdb_completer_command_word_break_characters[] =
 " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,";
 
 /* When completing on file names, we remove from the list of word
    break characters any characters that are commonly used in file
    names, such as '-', '+', '~', etc.  Otherwise, readline displays
    incorrect completion candidates.  */
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
 /* MS-DOS and MS-Windows use colon as part of the drive spec, and most
    programs support @foo style response files.  */
-static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@";
+static const char gdb_completer_file_name_break_characters[] =
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  " \t\n*|\"';?><@";
 #else
-static char *gdb_completer_file_name_break_characters = " \t\n*|\"';:?><";
+  " \t\n*|\"';:?><";
 #endif
 
 /* Characters that can be used to quote completion strings.  Note that
    we can't include '"' because the gdb C parser treats such quoted
    sequences as strings.  */
-static char *gdb_completer_quote_characters = "'";
+static const char gdb_completer_quote_characters[] = "'";
 \f
 /* Accessor for some completer data that may interest other files.  */
 
-char *
+const char *
 get_gdb_completer_quote_characters (void)
 {
   return gdb_completer_quote_characters;
@@ -506,17 +507,13 @@ location_completer (struct cmd_list_element *ignore,
 {
   VEC (char_ptr) *matches = NULL;
   const char *copy = text;
-  struct event_location *location;
 
-  location = string_to_explicit_location (&copy, current_language, 1);
+  event_location_up location = string_to_explicit_location (&copy,
+                                                           current_language,
+                                                           1);
   if (location != NULL)
-    {
-      struct cleanup *cleanup;
-
-      cleanup = make_cleanup_delete_event_location (location);
-      matches = explicit_location_completer (ignore, location, text, word);
-      do_cleanups (cleanup);
-    }
+    matches = explicit_location_completer (ignore, location.get (),
+                                          text, word);
   else
     {
       /* This is an address or linespec location.
@@ -651,17 +648,27 @@ expression_completer (struct cmd_list_element *ignore,
 
 /* See definition in completer.h.  */
 
+void
+set_rl_completer_word_break_characters (const char *break_chars)
+{
+  rl_completer_word_break_characters = (char *) break_chars;
+}
+
+/* See definition in completer.h.  */
+
 void
 set_gdb_completion_word_break_characters (completer_ftype *fn)
 {
+  const char *break_chars;
+
   /* So far we are only interested in differentiating filename
      completers from everything else.  */
   if (fn == filename_completer)
-    rl_completer_word_break_characters
-      = gdb_completer_file_name_break_characters;
+    break_chars = gdb_completer_file_name_break_characters;
   else
-    rl_completer_word_break_characters
-      = gdb_completer_command_word_break_characters;
+    break_chars = gdb_completer_command_word_break_characters;
+
+  set_rl_completer_word_break_characters (break_chars);
 }
 
 /* Here are some useful test cases for completion.  FIXME: These
@@ -743,8 +750,8 @@ complete_line_internal (const char *text,
      then we will switch to the special word break set for command
      strings, which leaves out the '-' character used in some
      commands.  */
-  rl_completer_word_break_characters =
-    current_language->la_word_break_characters();
+  set_rl_completer_word_break_characters
+    (current_language->la_word_break_characters());
 
   /* Decide whether to complete on a list of gdb commands or on
      symbols.  */
@@ -821,8 +828,8 @@ complete_line_internal (const char *text,
            }
          /* Ensure that readline does the right thing with respect to
             inserting quotes.  */
-         rl_completer_word_break_characters =
-           gdb_completer_command_word_break_characters;
+         set_rl_completer_word_break_characters
+           (gdb_completer_command_word_break_characters);
        }
     }
   else
@@ -848,8 +855,8 @@ complete_line_internal (const char *text,
 
                  /* Ensure that readline does the right thing
                     with respect to inserting quotes.  */
-                 rl_completer_word_break_characters =
-                   gdb_completer_command_word_break_characters;
+                 set_rl_completer_word_break_characters
+                   (gdb_completer_command_word_break_characters);
                }
              else if (reason == handle_help)
                list = NULL;
@@ -857,8 +864,8 @@ complete_line_internal (const char *text,
                {
                  if (reason != handle_brkchars)
                    list = complete_on_enum (c->enums, p, word);
-                 rl_completer_word_break_characters =
-                   gdb_completer_command_word_break_characters;
+                 set_rl_completer_word_break_characters
+                   (gdb_completer_command_word_break_characters);
                }
              else
                {
@@ -879,8 +886,8 @@ complete_line_internal (const char *text,
                             && strchr (gdb_completer_file_name_break_characters, p[-1]) == NULL;
                           p--)
                        ;
-                     rl_completer_word_break_characters =
-                       gdb_completer_file_name_break_characters;
+                     set_rl_completer_word_break_characters
+                       (gdb_completer_file_name_break_characters);
                    }
                  if (reason == handle_brkchars
                      && c->completer_handle_brkchars != NULL)
@@ -913,8 +920,8 @@ complete_line_internal (const char *text,
 
              /* Ensure that readline does the right thing
                 with respect to inserting quotes.  */
-             rl_completer_word_break_characters =
-               gdb_completer_command_word_break_characters;
+             set_rl_completer_word_break_characters
+               (gdb_completer_command_word_break_characters);
            }
        }
       else if (reason == handle_help)
@@ -947,8 +954,8 @@ complete_line_internal (const char *text,
                                    p[-1]) == NULL;
                       p--)
                    ;
-                 rl_completer_word_break_characters =
-                   gdb_completer_file_name_break_characters;
+                 set_rl_completer_word_break_characters
+                   (gdb_completer_file_name_break_characters);
                }
              if (reason == handle_brkchars
                  && c->completer_handle_brkchars != NULL)
@@ -1673,7 +1680,8 @@ gdb_print_filename (char *to_print, char *full_pathname, int prefix_bytes,
                    const struct match_list_displayer *displayer)
 {
   int printed_len, extension_char, slen, tlen;
-  char *s, c, *new_full_pathname, *dn;
+  char *s, c, *new_full_pathname;
+  const char *dn;
   extern int _rl_complete_mark_directories;
 
   extension_char = 0;
This page took 0.02572 seconds and 4 git commands to generate.