* tuiIO.c (tui_prep_terminal): Save the prompt registered in readline.
authorStephane Carrez <stcarrez@nerim.fr>
Sat, 26 Oct 2002 10:38:57 +0000 (10:38 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Sat, 26 Oct 2002 10:38:57 +0000 (10:38 +0000)
(tui_redisplay_readline): Use the last saved prompt.
(tui_rl_saved_prompt): New.

gdb/tui/ChangeLog
gdb/tui/tuiIO.c

index 7d67b5e8b5393830e48800c8943291a845d71124..c0fb2bed878372d68425833f54d9bfcef6d5be7f 100644 (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>
 
        Fix PR gdb/787
index 3968a0a270e5b324b153caf56296ccb3c619f792..b9b373c6646f19f73b722d26b94c9e3e587a3ad8 100644 (file)
@@ -124,6 +124,10 @@ static FILE *tui_old_rl_outstream;
 static int tui_readline_pipe[2];
 #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 void
@@ -194,7 +198,7 @@ tui_redisplay_readline (void)
   if (tui_current_key_mode == tui_single_key_mode)
     prompt = "";
   else
-    prompt = get_prompt ();
+    prompt = tui_rl_saved_prompt;
   
   c_pos = -1;
   c_line = -1;
@@ -256,10 +260,15 @@ tui_redisplay_readline (void)
 }
 
 /* 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
 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