/* TUI support I/O functions.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
- Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009,
+ 2010, 2011 Free Software Foundation, Inc.
Contributed by Hewlett-Packard Company.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "target.h"
#undef TUI_USE_PIPE_FOR_READLINE. */
/* For gdb 5.3, prefer to continue the pipe hack as a backup wheel. */
+#ifdef HAVE_PIPE
#define TUI_USE_PIPE_FOR_READLINE
+#endif
/* #undef TUI_USE_PIPE_FOR_READLINE */
/* TUI output files. */
static VFunction *tui_old_rl_redisplay_function;
static VFunction *tui_old_rl_prep_terminal;
static VFunction *tui_old_rl_deprep_terminal;
-static int tui_old_readline_echoing_p;
+static int tui_old_rl_echoing_p;
/* Readline output stream.
Should be removed when readline is clean. */
}
getyx (w, TUI_CMD_WIN->detail.command_info.cur_line,
TUI_CMD_WIN->detail.command_info.curch);
- TUI_CMD_WIN->detail.command_info.start_line = TUI_CMD_WIN->detail.command_info.cur_line;
+ TUI_CMD_WIN->detail.command_info.start_line
+ = TUI_CMD_WIN->detail.command_info.cur_line;
/* We could defer the following. */
wrefresh (w);
/* Read readline output pipe and feed the command window with it.
Should be removed when readline is clean. */
static void
-tui_readline_output (int code, gdb_client_data data)
+tui_readline_output (int error, gdb_client_data data)
{
int size;
char buf[256];
final slash. Otherwise, we return what we were passed.
Comes from readline/complete.c. */
-static char *
-printable_part (char *pathname)
+static const char *
+printable_part (const char *pathname)
{
- char *temp;
-
- temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
-#if defined (__MSDOS__)
- if (rl_filename_completion_desired
- && temp == 0 && isalpha (pathname[0])
- && pathname[1] == ':')
- temp = pathname + 1;
-#endif
- return (temp ? ++temp : pathname);
+ return rl_filename_completion_desired ? lbasename (pathname) : pathname;
}
/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and
} while (0)
static int
-print_filename (char *to_print, char *full_pathname)
+print_filename (const char *to_print, const char *full_pathname)
{
int printed_len = 0;
- char *s;
+ const char *s;
for (s = to_print; *s; s++)
{
int count, limit, printed_len;
int i, j, k, l;
- char *temp;
+ const char *temp;
/* Screen dimension correspond to the TUI command window. */
int screenwidth = TUI_CMD_WIN->generic.width;
void
tui_setup_io (int mode)
{
- extern int readline_echoing_p;
-
+ extern int _rl_echoing_p;
+
if (mode)
{
/* Redirect readline to TUI. */
tui_old_rl_prep_terminal = rl_prep_term_function;
tui_old_rl_getc_function = rl_getc_function;
tui_old_rl_outstream = rl_outstream;
- tui_old_readline_echoing_p = readline_echoing_p;
+ tui_old_rl_echoing_p = _rl_echoing_p;
rl_redisplay_function = tui_redisplay_readline;
rl_deprep_term_function = tui_deprep_terminal;
rl_prep_term_function = tui_prep_terminal;
rl_getc_function = tui_getc;
- readline_echoing_p = 0;
+ _rl_echoing_p = 0;
rl_outstream = tui_rl_outstream;
rl_prompt = 0;
rl_completion_display_matches_hook = tui_rl_display_match_list;
/* Keep track of previous gdb output. */
tui_old_stdout = gdb_stdout;
tui_old_stderr = gdb_stderr;
- tui_old_uiout = uiout;
+ tui_old_uiout = current_uiout;
/* Reconfigure gdb output. */
gdb_stdout = tui_stdout;
gdb_stderr = tui_stderr;
gdb_stdlog = gdb_stdout; /* for moment */
gdb_stdtarg = gdb_stderr; /* for moment */
- uiout = tui_out;
+ gdb_stdtargerr = gdb_stderr; /* for moment */
+ current_uiout = tui_out;
/* Save tty for SIGCONT. */
savetty ();
gdb_stderr = tui_old_stderr;
gdb_stdlog = gdb_stdout; /* for moment */
gdb_stdtarg = gdb_stderr; /* for moment */
- uiout = tui_old_uiout;
+ gdb_stdtargerr = gdb_stderr; /* for moment */
+ current_uiout = tui_old_uiout;
/* Restore readline. */
rl_redisplay_function = tui_old_rl_redisplay_function;
rl_getc_function = tui_old_rl_getc_function;
rl_outstream = tui_old_rl_outstream;
rl_completion_display_matches_hook = 0;
- readline_echoing_p = tui_old_readline_echoing_p;
+ _rl_echoing_p = tui_old_rl_echoing_p;
rl_already_prompted = 0;
/* Save tty for SIGCONT. */
/* Create the default UI. It is not created because we installed a
deprecated_init_ui_hook. */
- tui_old_uiout = uiout = cli_out_new (gdb_stdout);
+ tui_old_uiout = cli_out_new (gdb_stdout);
#ifdef TUI_USE_PIPE_FOR_READLINE
/* Temporary solution for readline writing to stdout: redirect
#ifdef TUI_USE_PIPE_FOR_READLINE
/* Flush readline output. */
- tui_readline_output (GDB_READABLE, 0);
+ tui_readline_output (0, 0);
#endif
ch = wgetch (w);
{
if (tui_win_resized ())
{
+ tui_resize_all ();
tui_refresh_all_win ();
dont_repeat ();
tui_set_win_resized_to (FALSE);