diff options
author | Pedro Alves <palves@redhat.com> | 2016-03-09 18:25:00 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-03-09 18:25:00 +0000 |
commit | b69d38afdea34e4fecab5ea47ffe1e594e0b6233 (patch) | |
tree | 301f91f19eb5968ab8b281eb1510be71f40200c8 /gdb/top.h | |
parent | 2669cade3dcebf5d572bcd535cf21934cbc1633c (diff) | |
download | binutils-gdb-b69d38afdea34e4fecab5ea47ffe1e594e0b6233.tar.gz |
Command line input handling TLC
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.
Diffstat (limited to 'gdb/top.h')
-rw-r--r-- | gdb/top.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/top.h b/gdb/top.h index f3b080bf9d1..a498f390ebc 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -20,6 +20,8 @@ #ifndef TOP_H #define TOP_H +struct buffer; + /* From top.c. */ extern char *saved_command_line; extern FILE *instream; @@ -97,4 +99,8 @@ 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 |