mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 04:24:43 +00:00
gdb/tui: Fix build for older ncurses
Older versions of ncurses (including the version that ships inside macos, and Centos 7) do not include the A_ITALIC macro. This patch simply hides any use of A_ITALIC behind a preprocessor guard. The result of this is that italics won't be rendered in the tui if ncurses isn't supported. We do have other options if we think it's important - for instance we could show italics as bold if italics aren't supported. From my understanding, that might be overthinking it - so I took the simplest approach here, just to fix the build. Those versions also define tgetnum as: int tgetnum(char *id); so attempting to compile for c++ results in the error: ISO C++ forbids converting a string constant to 'char*' [-Werror=write-strings] This is just a dated API issue, so a const cast resolves the issue. Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
@@ -319,7 +319,9 @@ tui_apply_style (WINDOW *w, ui_file_style style)
|
||||
wattron (w, A_NORMAL);
|
||||
wattroff (w, A_BOLD);
|
||||
wattroff (w, A_DIM);
|
||||
#ifdef A_ITALIC
|
||||
wattroff (w, A_ITALIC);
|
||||
#endif
|
||||
wattroff (w, A_UNDERLINE);
|
||||
wattroff (w, A_REVERSE);
|
||||
if (last_color_pair != -1)
|
||||
@@ -368,8 +370,10 @@ tui_apply_style (WINDOW *w, ui_file_style style)
|
||||
gdb_assert_not_reached ("invalid intensity");
|
||||
}
|
||||
|
||||
#ifdef A_ITALIC
|
||||
if (style.is_italic ())
|
||||
wattron (w, A_ITALIC);
|
||||
#endif
|
||||
|
||||
if (style.is_underline ())
|
||||
wattron (w, A_UNDERLINE);
|
||||
|
||||
@@ -594,7 +594,11 @@ colorsupport ()
|
||||
{
|
||||
std::vector<color_space> result = {color_space::MONOCHROME};
|
||||
|
||||
int colors = tgetnum ("Co");
|
||||
/* ncurses versions prior to 6.1 (and other curses
|
||||
implementations) declare the tgetnum argument to be
|
||||
'char *', so we need the const_cast, since C++ will not
|
||||
implicitly convert. */
|
||||
int colors = tgetnum (const_cast<char*> ("Co"));
|
||||
if (colors >= 8)
|
||||
result.push_back (color_space::ANSI_8COLOR);
|
||||
if (colors >= 16)
|
||||
|
||||
Reference in New Issue
Block a user