1 /* 2 * Copyright (c) 1981 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 static char sccsid[] = "@(#)tstp.c 5.3 (Berkeley) 06/30/88"; 20 #endif /* not lint */ 21 22 # include <signal.h> 23 24 # include "curses.ext" 25 26 /* 27 * handle stop and start signals 28 * 29 * @(#)tstp.c 5.3 (Berkeley) 06/30/88 30 */ 31 tstp() { 32 33 # ifdef SIGTSTP 34 35 SGTTY tty; 36 int omask; 37 # ifdef DEBUG 38 if (outf) 39 fflush(outf); 40 # endif 41 tty = _tty; 42 mvcur(0, COLS - 1, LINES - 1, 0); 43 endwin(); 44 fflush(stdout); 45 /* reset signal handler so kill below stops us */ 46 signal(SIGTSTP, SIG_DFL); 47 #define mask(s) (1 << ((s)-1)) 48 omask = sigsetmask(sigblock(0) &~ mask(SIGTSTP)); 49 kill(0, SIGTSTP); 50 sigblock(mask(SIGTSTP)); 51 signal(SIGTSTP, tstp); 52 _tty = tty; 53 stty(_tty_ch, &_tty); 54 wrefresh(curscr); 55 # endif SIGTSTP 56 } 57