mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-08 08:38:08 +08:00
* ada-lang.c (ada_make_symbol_completion_list): Return a VEC.
* breakpoint.c (catch_syscall_completer): Return a VEC. * cli/cli-cmds.c (complete_command): Update. * cli/cli-decode.c (complete_on_cmdlist): Return a VEC. (complete_on_enum): Likewise. * command.h: Include gdb_vecs.h. (completer_ftype): Change return type. (complete_on_cmdlist, complete_on_enum): Likewise. * completer.c (noop_completer, filename_completer) (location_completer): Return a VEC. (add_struct_fields): Remove 'nextp' argument. Change 'output' to a VEC. (expression_completer, complete_line_internal, complete_line) (command_completer): Return a VEC. (gdb_completion_word_break_characters, line_completion_function): Update. * completer.h: Include gdb_vecs.h. (complete_line, noop_completer, filename_completer) (expression_completer, location_completer, command_completer): Update. * f-lang.c (f_word_break_characters): Return a VEC. * interps.c (interpreter_completer): Return a VEC. * language.h (struct language_defn) <la_make_symbol_completion_list>: Return a VEC. * python/py-cmd.c (cmdpy_completer): Return a VEC. * symtab.c (free_completion_list): Take a VEC. (return_val_size, return_val_index): Remove. (return_val): Now a VEC. (completion_list_add_name): Update. (default_make_symbol_completion_list_break_on) (default_make_symbol_completion_list, make_symbol_completion_list) (make_symbol_completion_list_fn, make_file_symbol_completion_list): Return a VEC. (add_filename_to_list): Update. (struct add_partial_filename_data) <list_used, list_alloced>: Remove. <list>: Now a VEC. (maybe_add_partial_symtab_filename): Update. (make_source_files_completion_list): Return a VEC. * symtab.h (default_make_symbol_completion_list_break_on) (default_make_symbol_completion_list, make_symbol_completion_list) (make_symbol_completion_list_fn, make_file_symbol_completion_list) (make_source_files_completion_list): Update.
This commit is contained in:
@ -254,7 +254,8 @@ static void
|
||||
complete_command (char *arg, int from_tty)
|
||||
{
|
||||
int argpoint;
|
||||
char **completions, *point, *arg_prefix;
|
||||
char *point, *arg_prefix;
|
||||
VEC (char_ptr) *completions;
|
||||
|
||||
dont_repeat ();
|
||||
|
||||
@ -282,33 +283,30 @@ complete_command (char *arg, int from_tty)
|
||||
|
||||
if (completions)
|
||||
{
|
||||
int item, size;
|
||||
int ix, size = VEC_length (char_ptr, completions);
|
||||
char *item, *prev = NULL;
|
||||
|
||||
for (size = 0; completions[size]; ++size)
|
||||
;
|
||||
qsort (completions, size, sizeof (char *), compare_strings);
|
||||
qsort (VEC_address (char_ptr, completions), size,
|
||||
sizeof (char *), compare_strings);
|
||||
|
||||
/* We do extra processing here since we only want to print each
|
||||
unique item once. */
|
||||
item = 0;
|
||||
while (item < size)
|
||||
for (ix = 0; VEC_iterate (char_ptr, completions, ix, item); ++ix)
|
||||
{
|
||||
int next_item;
|
||||
|
||||
printf_unfiltered ("%s%s\n", arg_prefix, completions[item]);
|
||||
next_item = item + 1;
|
||||
while (next_item < size
|
||||
&& ! strcmp (completions[item], completions[next_item]))
|
||||
if (prev == NULL || strcmp (item, prev) != 0)
|
||||
{
|
||||
xfree (completions[next_item]);
|
||||
++next_item;
|
||||
printf_unfiltered ("%s%s\n", arg_prefix, item);
|
||||
xfree (prev);
|
||||
prev = item;
|
||||
}
|
||||
|
||||
xfree (completions[item]);
|
||||
item = next_item;
|
||||
else
|
||||
xfree (item);
|
||||
}
|
||||
|
||||
xfree (completions);
|
||||
xfree (prev);
|
||||
VEC_free (char_ptr, completions);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user