summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-06-21 01:11:51 +0100
committerPedro Alves <palves@redhat.com>2016-06-21 01:11:51 +0100
commitdbf30ca3f5fec91671b37592f1a6644a2c36f67a (patch)
tree73f8bfedce01e0127c2f7794eacc6d24943d9304
parentb2d86570b316c347384c4ba9bb3933ed5e807fca (diff)
downloadbinutils-gdb-dbf30ca3f5fec91671b37592f1a6644a2c36f67a.tar.gz
Make gdb_in_secondary_prompt_p() be per UI
gdb/ChangeLog: 2016-06-21 Pedro Alves <palves@redhat.com> * top.c (gdb_secondary_prompt_depth): Delete. (gdb_in_secondary_prompt_p): Add ui parameter. Use it. (gdb_readline_wrapper_cleanup, gdb_readline_wrapper): Adjust to per-UI gdb_secondary_prompt_depth. * top.h (struct ui) <secondary_prompt_depth>: New field.
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/top.c15
-rw-r--r--gdb/top.h9
-rw-r--r--gdb/tui/tui-io.c4
-rw-r--r--gdb/tui/tui.c2
5 files changed, 23 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bad45aa2ffc..e3293d15ea3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2016-06-21 Pedro Alves <palves@redhat.com>
+ * top.c (gdb_secondary_prompt_depth): Delete.
+ (gdb_in_secondary_prompt_p): Add ui parameter. Use it.
+ (gdb_readline_wrapper_cleanup, gdb_readline_wrapper): Adjust to
+ per-UI gdb_secondary_prompt_depth.
+ * top.h (struct ui) <secondary_prompt_depth>: New field.
+
+2016-06-21 Pedro Alves <palves@redhat.com>
+
* cli/cli-interp.c (cli_interpreter_pre_command_loop): New
function.
(cli_interp_procs): Install it instead of cli_command_loop.
diff --git a/gdb/top.c b/gdb/top.c
index 7e82dcfc372..79f4293556b 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -757,17 +757,12 @@ static char *gdb_readline_wrapper_result;
static void (*saved_after_char_processing_hook) (void);
-/* The number of nested readline secondary prompts that are currently
- active. */
-
-static int gdb_secondary_prompt_depth = 0;
-
/* See top.h. */
int
-gdb_in_secondary_prompt_p (void)
+gdb_in_secondary_prompt_p (struct ui *ui)
{
- return gdb_secondary_prompt_depth > 0;
+ return ui->secondary_prompt_depth > 0;
}
@@ -828,8 +823,8 @@ gdb_readline_wrapper_cleanup (void *arg)
gdb_readline_wrapper_result = NULL;
gdb_readline_wrapper_done = 0;
- gdb_secondary_prompt_depth--;
- gdb_assert (gdb_secondary_prompt_depth >= 0);
+ ui->secondary_prompt_depth--;
+ gdb_assert (ui->secondary_prompt_depth >= 0);
after_char_processing_hook = saved_after_char_processing_hook;
saved_after_char_processing_hook = NULL;
@@ -859,7 +854,7 @@ gdb_readline_wrapper (const char *prompt)
cleanup->target_is_async_orig = target_is_async_p ();
- gdb_secondary_prompt_depth++;
+ ui->secondary_prompt_depth++;
back_to = make_cleanup (gdb_readline_wrapper_cleanup, cleanup);
if (cleanup->target_is_async_orig)
diff --git a/gdb/top.h b/gdb/top.h
index 009fdb75e8c..2aa44080c9b 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -73,6 +73,10 @@ struct ui
"start" -ex "next"') are processed. */
int async;
+ /* The number of nested readline secondary prompts that are
+ currently active. */
+ int secondary_prompt_depth;
+
/* stdio stream that command input is being read from. Set to stdin
normally. Set by source_command to the file we are sourcing.
Set to NULL if we are executing a user-defined command or
@@ -190,9 +194,10 @@ extern char *get_prompt (void);
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. */
+/* Return 1 if UI's current input handler is a secondary prompt, 0
+ otherwise. */
-extern int gdb_in_secondary_prompt_p (void);
+extern int gdb_in_secondary_prompt_p (struct ui *ui);
/* From random places. */
extern int readnow_symbol_files;
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index 6f2d8924a8f..ed79b444144 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -212,7 +212,7 @@ tui_redisplay_readline (void)
The command could call prompt_for_continue and we must not
restore SingleKey so that the prompt and normal keymap are used. */
if (tui_current_key_mode == TUI_ONE_COMMAND_MODE && rl_end == 0
- && !gdb_in_secondary_prompt_p ())
+ && !gdb_in_secondary_prompt_p (current_ui))
tui_set_key_mode (TUI_SINGLE_KEY_MODE);
if (tui_current_key_mode == TUI_SINGLE_KEY_MODE)
@@ -585,7 +585,7 @@ tui_getc (FILE *fp)
with empty lines with gdb prompt at beginning. Instead of that,
stay on the same line but provide a visual effect to show the
user we recognized the command. */
- if (rl_end == 0 && !gdb_in_secondary_prompt_p ())
+ if (rl_end == 0 && !gdb_in_secondary_prompt_p (current_ui))
{
wmove (w, getcury (w), 0);
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index e1160d2aa88..7c3e70497a1 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -304,7 +304,7 @@ tui_rl_startup_hook (void)
{
rl_already_prompted = 1;
if (tui_current_key_mode != TUI_COMMAND_MODE
- && !gdb_in_secondary_prompt_p ())
+ && !gdb_in_secondary_prompt_p (current_ui))
tui_set_key_mode (TUI_SINGLE_KEY_MODE);
tui_redisplay_readline ();
return 0;