From 6b8a872ff1038e2b8618ea33bb1113b78f39976d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 22 Jan 2015 20:23:12 +0200 Subject: [PATCH] Fix MinGW TUI build gdb/ 2015-01-22 Eli Zaretskii * gdb/tui/tui.c (tui_enable) [__MINGW32__]: If the call to 'newterm' fails with the 1st arg NULL, try again with "unknown". Don't test the "cup" capability: it isn't supported by the Windows port of ncurses, but the Windows console driver is still capable of supporting TUI. --- gdb/ChangeLog | 8 ++++++++ gdb/tui/tui.c | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fecedeb625..a6ba992d68 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2015-01-22 Eli Zaretskii + + * gdb/tui/tui.c (tui_enable) [__MINGW32__]: If the call to 'newterm' + fails with the 1st arg NULL, try again with "unknown". Don't test + the "cup" capability: it isn't supported by the Windows port of + ncurses, but the Windows console driver is still capable of + supporting TUI. + 2015-01-22 Jan Kratochvil * compile/compile.c (_initialize_compile): Use -fPIE for compile_args. diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c index 00e505df9c..92463df3e5 100644 --- a/gdb/tui/tui.c +++ b/gdb/tui/tui.c @@ -425,6 +425,12 @@ tui_enable (void) error (_("Cannot enable the TUI when output is not a terminal")); s = newterm (NULL, stdout, stdin); +#ifdef __MINGW32__ + /* The MinGW port of ncurses requires $TERM to be unset in order + to activate the Windows console driver. */ + if (s == NULL) + s = newterm ("unknown", stdout, stdin); +#endif if (s == NULL) { error (_("Cannot enable the TUI: error opening terminal [TERM=%s]"), @@ -432,7 +438,9 @@ tui_enable (void) } w = stdscr; - /* Check required terminal capabilities. */ + /* Check required terminal capabilities. The MinGW port of + ncurses does have them, but doesn't expose them through "cup". */ +#ifndef __MINGW32__ cap = tigetstr ("cup"); if (cap == NULL || cap == (char *) -1 || *cap == '\0') { @@ -442,6 +450,7 @@ tui_enable (void) "terminal doesn't support cursor addressing [TERM=%s]"), gdb_getenv_term ()); } +#endif cbreak (); noecho ();