Command line input handling TLC
authorPedro Alves <palves@redhat.com>
Wed, 9 Mar 2016 18:25:00 +0000 (18:25 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 9 Mar 2016 18:25:00 +0000 (18:25 +0000)
commitb69d38afdea34e4fecab5ea47ffe1e594e0b6233
tree301f91f19eb5968ab8b281eb1510be71f40200c8
parent2669cade3dcebf5d572bcd535cf21934cbc1633c
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.
gdb/ChangeLog
gdb/event-top.c
gdb/event-top.h
gdb/top.c
gdb/top.h