# include <signal.h>
-# ifdef SIGTSTP
-
# include "curses.ext"
/*
* handle stop and start signals
*
- * 3/5/81 (Berkeley) @(#)tstp.c 1.1
+ * 6/25/83 (Berkeley) @(#)tstp.c 1.3
*/
tstp() {
+# ifdef SIGTSTP
+
SGTTY tty;
+ int omask;
# ifdef DEBUG
if (outf)
fflush(outf);
mvcur(0, COLS - 1, LINES - 1, 0);
endwin();
fflush(stdout);
+ /* reset signal handler so kill below stops us */
+ signal(SIGTSTP, SIG_DFL);
+#define mask(s) (1 << ((s)-1))
+ omask = sigsetmask(sigblock(0) &~ mask(SIGTSTP));
kill(0, SIGTSTP);
+ sigblock(mask(SIGTSTP));
signal(SIGTSTP, tstp);
_tty = tty;
stty(_tty_ch, &_tty);
wrefresh(curscr);
+# endif SIGTSTP
}
-# endif