/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <SigAction.h>
-MODULE_ID("$Id: lib_tstp.c,v 1.45 2011/10/22 15:37:42 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.49 2017/07/22 23:29:58 tom Exp $")
#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
#define USE_SIGTSTP 1
#if USE_SIGTSTP
static void
-tstp(int dummy GCC_UNUSED)
+handle_SIGTSTP(int dummy GCC_UNUSED)
{
SCREEN *sp = CURRENT_SCREEN;
sigset_t mask, omask;
int sigttou_blocked;
#endif
- T(("tstp() called"));
+ _nc_globals.have_sigtstp = 1;
+ T(("handle_SIGTSTP() called"));
/*
* The user may have changed the prog_mode tty bits, so save them.
* taken ownership of the tty and modified the settings when our
* parent was stopped before us, and we would likely pick up the
* settings already modified by the shell.
+ *
+ * Don't do this if we're not in curses -
*/
- if (sp != 0 && !sp->_endwin) /* don't do this if we're not in curses */
+ if (sp != 0 && (sp->_endwin == ewRunning))
#if HAVE_TCGETPGRP
if (tcgetpgrp(STDIN_FILENO) == getpgrp())
#endif
#endif /* USE_SIGTSTP */
static void
-cleanup(int sig)
+handle_SIGINT(int sig)
{
SCREEN *sp = CURRENT_SCREEN;
SCREEN *scan;
for (each_screen(scan)) {
if (scan->_ofp != 0
- && isatty(fileno(scan->_ofp))) {
- scan->_cleanup = TRUE;
+ && NC_ISATTY(fileno(scan->_ofp))) {
scan->_outch = NCURSES_SP_NAME(_nc_outch);
}
set_term(scan);
NCURSES_SP_NAME(endwin) (NCURSES_SP_ARG);
if (sp)
- sp->_endwin = FALSE; /* in case of reuse */
+ sp->_endwin = ewInitial; /* in case of reuse */
}
}
}
#if USE_SIGWINCH
static void
-sigwinch(int sig GCC_UNUSED)
+handle_SIGWINCH(int sig GCC_UNUSED)
{
_nc_globals.have_sigwinch = 1;
# if USE_PTHREADS_EINTR
* handler.
*/
static int
-CatchIfDefault(int sig, RETSIGTYPE (*handler) (int))
+CatchIfDefault(int sig, void (*handler) (int))
{
int result;
#if HAVE_SIGACTION || HAVE_SIGVEC
result = FALSE;
}
#else /* !HAVE_SIGACTION */
- RETSIGTYPE (*ohandler) (int);
+ void (*ohandler) (int);
ohandler = signal(sig, SIG_IGN);
if (ohandler == SIG_DFL
#ifdef SA_RESTART
new_sigaction.sa_flags |= SA_RESTART;
#endif /* SA_RESTART */
- new_sigaction.sa_handler = tstp;
+ new_sigaction.sa_handler = handle_SIGTSTP;
(void) sigaction(SIGTSTP, &new_sigaction, NULL);
} else {
ignore_tstp = TRUE;
if (!_nc_globals.init_signals) {
if (enable) {
- CatchIfDefault(SIGINT, cleanup);
- CatchIfDefault(SIGTERM, cleanup);
+ CatchIfDefault(SIGINT, handle_SIGINT);
+ CatchIfDefault(SIGTERM, handle_SIGINT);
#if USE_SIGWINCH
- CatchIfDefault(SIGWINCH, sigwinch);
+ CatchIfDefault(SIGWINCH, handle_SIGWINCH);
#endif
_nc_globals.init_signals = TRUE;
}