summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2021-09-06 21:20:40 +0200
committerPřemysl Eric Janouch <p@janouch.name>2021-09-06 21:30:03 +0200
commit30777e8fd305f322b4ddd197ebeab894a63b3a8a (patch)
tree3a92cb8d87b4db0d4308e7a6bafa828e479bc808
parent353174ee3c5f3990f6745079a3fcb8dd98f728e0 (diff)
downloadnncmpp-30777e8fd305f322b4ddd197ebeab894a63b3a8a.tar.gz
nncmpp-30777e8fd305f322b4ddd197ebeab894a63b3a8a.tar.xz
nncmpp-30777e8fd305f322b4ddd197ebeab894a63b3a8a.zip
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.
-rw-r--r--nncmpp.c6
1 files 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);