summaryrefslogtreecommitdiff
path: root/gdb/top.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-03-09 18:25:00 +0000
committerPedro Alves <palves@redhat.com>2016-03-09 18:25:00 +0000
commitb69d38afdea34e4fecab5ea47ffe1e594e0b6233 (patch)
tree301f91f19eb5968ab8b281eb1510be71f40200c8 /gdb/top.h
parent2669cade3dcebf5d572bcd535cf21934cbc1633c (diff)
downloadbinutils-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.h6
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