xref: /csrg-svn/usr.bin/window/wwsuspend.c (revision 14412)
113960Sedward #ifndef lint
2*14412Sedward static	char *sccsid = "@(#)wwsuspend.c	2.1.1.1 83/08/09";
313960Sedward #endif
413960Sedward 
513960Sedward #include "ww.h"
613960Sedward #include <signal.h>
713960Sedward 
8*14412Sedward #define mask(s)	(1 << (s) - 1)
913960Sedward 
1013960Sedward wwsuspend()
1113960Sedward {
1213960Sedward 	int oldmask;
1313960Sedward 
14*14412Sedward 	oldmask = sigblock(mask(SIGTSTP));
1513960Sedward 	wwend();
16*14412Sedward 	(void) sigsetmask(sigblock(0) & ~mask(SIGTSTP));
17*14412Sedward 	(void) kill(0, SIGTSTP);
18*14412Sedward 	(void) sigblock(mask(SIGTSTP));
19*14412Sedward 	(void) wwsettty(0, &wwnewtty);
20*14412Sedward 	(*tt.tt_reset)();
21*14412Sedward 	wwredraw();
22*14412Sedward 	(void) sigsetmask(oldmask);
2313960Sedward }
24