Improve terminal initialisation
Don't just abort() on failures, print a proper error message. Also, set up ncurses as late as possible. This should be alright wrt. signal handlers according to ncurses code, as well as XSI: > Curses implementations may provide for special handling of > the SIGINT, SIGQUIT and SIGTSTP signals if their disposition > is SIG_DFL at the time initscr is called ... termo blocks job control, so SIGTSTP is not a concern at all.
This commit is contained in:
parent
353174ee3c
commit
30777e8fd3
6
nncmpp.c
6
nncmpp.c
|
@ -1254,9 +1254,9 @@ app_init_terminal (void)
|
|||
{
|
||||
TERMO_CHECK_VERSION;
|
||||
if (!(g.tk = termo_new (STDIN_FILENO, NULL, 0)))
|
||||
abort ();
|
||||
exit_fatal ("failed to set up the terminal");
|
||||
if (!initscr () || nonl () == ERR)
|
||||
abort ();
|
||||
exit_fatal ("failed to set up the terminal");
|
||||
|
||||
// By default we don't use any colors so they're not required...
|
||||
if (start_color () == ERR
|
||||
|
@ -4574,9 +4574,9 @@ main (int argc, char *argv[])
|
|||
|
||||
app_init_context ();
|
||||
app_load_configuration ();
|
||||
app_init_terminal ();
|
||||
signals_setup_handlers ();
|
||||
app_init_poller_events ();
|
||||
app_init_terminal ();
|
||||
|
||||
g_normal_keys = app_init_bindings ("normal",
|
||||
g_normal_defaults, N_ELEMENTS (g_normal_defaults), &g_normal_keys_len);
|
||||
|
|
Loading…
Reference in New Issue