mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 11:33:45 +08:00
b69d38afde
I didn't manage to usefully split this further into smaller independent pieces, so: - Use "struct buffer" more. - Split out the responsibility of composing a complete command line from multiple input lines split with backslash ( E.g.: (gdb) print \ 1 + \ 2 $1 = 3 (gdb) ) to a separate function. Note we don't need the separate readline_input_state and more_to_come globals at all. They were just obfuscating the logic. - Factor out the tricky mostly duplicated code in command_line_handler and command_line_input. gdb/ChangeLog 2016-03-09 Pedro Alves <palves@redhat.com> * event-top.c (more_to_come): Delete. (struct readline_input_state): Delete. (readline_input_state): Delete. (get_command_line_buffer): New function. (command_handler): Update comments. Don't handle NULL commands here. Do not execute commented lines. (command_line_append_input_line): New function. (handle_line_of_input): New function, partly based on command_line_handler and command_line_input. (command_line_handler): Rewrite. * event-top.h (command_handler): New declaration. (command_loop): Defer command execution to command_handler. (command_line_input): Update comments. Simplify, using struct buffer and handle_line_of_input. * top.h (struct buffer): New forward declaration. (handle_line_of_input): New declaration.
107 lines
3.3 KiB
C
107 lines
3.3 KiB
C
/* Top level stuff for GDB, the GNU debugger.
|
|
|
|
Copyright (C) 1986-2016 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
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
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef TOP_H
|
|
#define TOP_H
|
|
|
|
struct buffer;
|
|
|
|
/* From top.c. */
|
|
extern char *saved_command_line;
|
|
extern FILE *instream;
|
|
extern int in_user_command;
|
|
extern int confirm;
|
|
extern char gdb_dirbuf[1024];
|
|
extern int inhibit_gdbinit;
|
|
extern const char gdbinit[];
|
|
|
|
extern void print_gdb_version (struct ui_file *);
|
|
extern void print_gdb_configuration (struct ui_file *);
|
|
|
|
extern void read_command_file (FILE *);
|
|
extern void init_history (void);
|
|
extern void command_loop (void);
|
|
extern int quit_confirm (void);
|
|
extern void quit_force (char *, int);
|
|
extern void quit_command (char *, int);
|
|
extern void quit_cover (void);
|
|
extern void execute_command (char *, int);
|
|
|
|
/* If the interpreter is in sync mode (we're running a user command's
|
|
list, running command hooks or similars), and we just ran a
|
|
synchronous command that started the target, wait for that command
|
|
to end. WAS_SYNC indicates whether sync_execution was set before
|
|
the command was run. */
|
|
|
|
extern void maybe_wait_sync_command_done (int was_sync);
|
|
|
|
/* Wait for a synchronous execution command to end. */
|
|
extern void wait_sync_command_done (void);
|
|
|
|
extern void check_frame_language_change (void);
|
|
|
|
/* Prepare for execution of a command.
|
|
Call this before every command, CLI or MI.
|
|
Returns a cleanup to be run after the command is completed. */
|
|
extern struct cleanup *prepare_execute_command (void);
|
|
|
|
/* This function returns a pointer to the string that is used
|
|
by gdb for its command prompt. */
|
|
extern char *get_prompt (void);
|
|
|
|
/* This function returns a pointer to the string that is used
|
|
by gdb for its command prompt. */
|
|
extern void set_prompt (const char *s);
|
|
|
|
/* Return 1 if the current input handler is a secondary prompt, 0 otherwise. */
|
|
|
|
extern int gdb_in_secondary_prompt_p (void);
|
|
|
|
/* From random places. */
|
|
extern int readnow_symbol_files;
|
|
|
|
/* Perform _initialize initialization. */
|
|
extern void gdb_init (char *);
|
|
|
|
/* For use by event-top.c. */
|
|
/* Variables from top.c. */
|
|
extern int source_line_number;
|
|
extern const char *source_file_name;
|
|
extern int history_expansion_p;
|
|
extern int server_command;
|
|
extern char *lim_at_start;
|
|
|
|
extern void gdb_add_history (const char *);
|
|
|
|
extern void show_commands (char *args, int from_tty);
|
|
|
|
extern void set_history (char *, int);
|
|
|
|
extern void show_history (char *, int);
|
|
|
|
extern void set_verbose (char *, int, struct cmd_list_element *);
|
|
|
|
extern void do_restore_instream_cleanup (void *stream);
|
|
|
|
extern char *handle_line_of_input (struct buffer *cmd_line_buffer,
|
|
char *rl, int repeat,
|
|
char *annotation_suffix);
|
|
|
|
#endif
|