From 30777e8fd305f322b4ddd197ebeab894a63b3a8a Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Mon, 6 Sep 2021 21:20:40 +0200 Subject: 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. --- nncmpp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nncmpp.c b/nncmpp.c index bf97a5e..7b141c0 100644 --- a/nncmpp.c +++ b/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); -- cgit v1.2.3-70-g09d2