xref: /csrg-svn/usr.bin/window/wwsuspend.c (revision 14649)
113960Sedward #ifndef lint
2*14649Sedward static	char *sccsid = "@(#)wwsuspend.c	3.2 83/08/15";
313960Sedward #endif
413960Sedward 
513960Sedward #include "ww.h"
6*14649Sedward #include "tt.h"
713960Sedward #include <signal.h>
813960Sedward 
914412Sedward #define mask(s)	(1 << (s) - 1)
1013960Sedward 
1113960Sedward wwsuspend()
1213960Sedward {
1313960Sedward 	int oldmask;
1413960Sedward 
1514412Sedward 	oldmask = sigblock(mask(SIGTSTP));
1613960Sedward 	wwend();
1714412Sedward 	(void) sigsetmask(sigblock(0) & ~mask(SIGTSTP));
1814412Sedward 	(void) kill(0, SIGTSTP);
1914412Sedward 	(void) sigblock(mask(SIGTSTP));
2014412Sedward 	(void) wwsettty(0, &wwnewtty);
21*14649Sedward 	(*tt.tt_init)();
2214412Sedward 	wwredraw();
2314412Sedward 	(void) sigsetmask(oldmask);
2413960Sedward }
25