* tuiIO.c (tui_prep_terminal): Save the prompt registered in readline.

(tui_redisplay_readline): Use the last saved prompt.
	(tui_rl_saved_prompt): New.
This commit is contained in:
Stephane Carrez 2002-10-26 10:38:57 +00:00
parent 26abbdc424
commit 57266a339f
2 changed files with 17 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2002-10-26 Stephane Carrez <stcarrez@nerim.fr>
* tuiIO.c (tui_prep_terminal): Save the prompt registered in readline.
(tui_redisplay_readline): Use the last saved prompt.
(tui_rl_saved_prompt): New.
2002-10-25 Stephane Carrez <stcarrez@nerim.fr> 2002-10-25 Stephane Carrez <stcarrez@nerim.fr>
Fix PR gdb/787 Fix PR gdb/787

View file

@ -124,6 +124,10 @@ static FILE *tui_old_rl_outstream;
static int tui_readline_pipe[2]; static int tui_readline_pipe[2];
#endif #endif
/* The last gdb prompt that was registered in readline.
This may be the main gdb prompt or a secondary prompt. */
static char *tui_rl_saved_prompt;
static unsigned int _tuiHandleResizeDuringIO (unsigned int); static unsigned int _tuiHandleResizeDuringIO (unsigned int);
static void static void
@ -194,7 +198,7 @@ tui_redisplay_readline (void)
if (tui_current_key_mode == tui_single_key_mode) if (tui_current_key_mode == tui_single_key_mode)
prompt = ""; prompt = "";
else else
prompt = get_prompt (); prompt = tui_rl_saved_prompt;
c_pos = -1; c_pos = -1;
c_line = -1; c_line = -1;
@ -256,10 +260,15 @@ tui_redisplay_readline (void)
} }
/* Readline callback to prepare the terminal. It is called once /* Readline callback to prepare the terminal. It is called once
each time we enter readline. There is nothing to do in curses mode. */ each time we enter readline. Terminal is already setup in curses mode. */
static void static void
tui_prep_terminal (void) tui_prep_terminal (void)
{ {
/* Save the prompt registered in readline to correctly display it.
(we can't use gdb_prompt() due to secondary prompts and can't use
rl_prompt because it points to an alloca buffer). */
xfree (tui_rl_saved_prompt);
tui_rl_saved_prompt = xstrdup (rl_prompt);
} }
/* Readline callback to restore the terminal. It is called once /* Readline callback to restore the terminal. It is called once