bsddialog: Fix for terminals without colours

When running the installer, in particular disextract (which is so far
the only part converted to bsddialog), on serial console or vt100 or
actually any terminal without color support, it failed to start.

This change makes bsddialog fallback on the black and white theme.

This is incorporated in newer version of bsddialog which will be
imported soon.

PR:		261272
Reported by:	thj
Differential Revision:	https://reviews.freebsd.org/D33920
This commit is contained in:
Alfonso Siciliano 2022-01-19 09:28:42 +01:00 committed by Baptiste Daroussin
parent 0ce7909cd0
commit 8ea2d22e6d

View File

@ -57,11 +57,12 @@ extern struct bsddialog_theme t;
int bsddialog_init(void)
{
int i, j, c, error;
enum bsddialog_default_theme theme;
set_error_string("");
if(initscr() == NULL)
RETURN_ERROR("Cannot init ncurses (initscr)");
if (initscr() == NULL)
RETURN_ERROR("Cannot init curses (initscr)");
error = OK;
error += keypad(stdscr, TRUE);
@ -69,9 +70,9 @@ int bsddialog_init(void)
error += cbreak();
error += noecho();
curs_set(0);
if(error != OK) {
if (error != OK) {
bsddialog_end();
RETURN_ERROR("Cannot init ncurses (keypad and cursor)");
RETURN_ERROR("Cannot init curses (keypad and cursor)");
}
c = 1;
@ -81,12 +82,13 @@ int bsddialog_init(void)
error += init_pair(c, i, j);
c++;
}
if(error != OK) {
bsddialog_end();
RETURN_ERROR("Cannot init ncurses (colors)");
}
if (bsddialog_set_default_theme(BSDDIALOG_THEME_DEFAULT) != 0) {
if (error == OK)
theme = BSDDIALOG_THEME_DEFAULT;
else
theme = BSDDIALOG_THEME_BLACKWHITE;
if (bsddialog_set_default_theme(theme) != 0) {
bsddialog_end();
return (BSDDIALOG_ERROR);
}