commit 48bfa43b34c38fcf5e33c1e63dbe5dbd8c5865ce from: Stefan Sperling date: Tue Jul 25 07:57:15 2023 UTC prevent ncurses signal handlers from being installed while using mock-io Aborting tog regress with Ctrl-C would trigger a "tty" pledge violation via the built-in ncurses handler for SIGINT, installed by newterm(). Install tog's own signal handlers earlier to fix this. commit - e07c178232d764c5a0518412c4a9348e6d24cfc1 commit + 48bfa43b34c38fcf5e33c1e63dbe5dbd8c5865ce blob - c9d4b710fc2d07f40efd7711e09a36d698b9b3ce blob + 00156e9346ffc307c604c9bb84de75bf7b682777 --- tog/tog.c +++ tog/tog.c @@ -4430,17 +4430,6 @@ done: static void init_curses(void) { - /* - * Override default signal handlers before starting ncurses. - * This should prevent ncurses from installing its own - * broken cleanup() signal handler. - */ - signal(SIGWINCH, tog_sigwinch); - signal(SIGPIPE, tog_sigpipe); - signal(SIGCONT, tog_sigcont); - signal(SIGINT, tog_sigint); - signal(SIGTERM, tog_sigterm); - if (using_mock_io) /* In test mode we use a fake terminal */ return; @@ -10086,6 +10075,17 @@ main(int argc, char *argv[]) setlocale(LC_CTYPE, ""); /* + * Override default signal handlers before starting ncurses. + * This should prevent ncurses from installing its own + * broken cleanup() signal handler. + */ + signal(SIGWINCH, tog_sigwinch); + signal(SIGPIPE, tog_sigpipe); + signal(SIGCONT, tog_sigcont); + signal(SIGINT, tog_sigint); + signal(SIGTERM, tog_sigterm); + + /* * Test mode init must happen before pledge() because "tty" will * not allow TTY-related ioctls to occur via regular files. */