diff options
author | Tom Tromey <tromey@redhat.com> | 2002-07-24 17:58:46 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2002-07-24 17:58:46 +0000 |
commit | b4f5539f0460e420dddade172f3d17c91470d254 (patch) | |
tree | 4873d442fa6ae0748ca69879333061337c403a17 /gdb/top.c | |
parent | 8e1a114b75cd91c110ca78b6eee8ad3df494ddab (diff) | |
download | gdb-b4f5539f0460e420dddade172f3d17c91470d254.zip gdb-b4f5539f0460e420dddade172f3d17c91470d254.tar.gz gdb-b4f5539f0460e420dddade172f3d17c91470d254.tar.bz2 |
* defs.h (gdb_readline_wrapper): Declare.
* utils.c (prompt_for_continue): Use gdb_readline_wrapper.
* tracepoint.c (read_actions): Use gdb_readline_wrapper.
* top.c (gdb_readline_wrapper): New function.
(command_line_input): Use it.
Diffstat (limited to 'gdb/top.c')
-rw-r--r-- | gdb/top.c | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -947,6 +947,29 @@ static int write_history_p; static int history_size; static char *history_filename; +/* This is like readline(), but it has some gdb-specific behavior. + gdb can use readline in both the synchronous and async modes during + a single gdb invocation. At the ordinary top-level prompt we might + be using the async readline. That means we can't use + rl_pre_input_hook, since it doesn't work properly in async mode. + However, for a secondary prompt (" >", such as occurs during a + `define'), gdb just calls readline() directly, running it in + synchronous mode. So for operate-and-get-next to work in this + situation, we have to switch the hooks around. That is what + gdb_readline_wrapper is for. */ +char * +gdb_readline_wrapper (char *prompt) +{ + /* Set the hook that works in this case. */ + if (event_loop_p && after_char_processing_hook) + { + rl_pre_input_hook = (Function *) after_char_processing_hook; + after_char_processing_hook = NULL; + } + + return readline (prompt); +} + #ifdef STOP_SIGNAL static void @@ -1174,7 +1197,7 @@ command_line_input (char *prompt_arg, int repeat, char *annotation_suffix) } else if (command_editing_p && instream == stdin && ISATTY (instream)) { - rl = readline (local_prompt); + rl = gdb_readline_wrapper (local_prompt); } else { |