rip out SHELL_ESCAPE define
[unix-history] / usr / src / usr.bin / window / wwsuspend.c
index 296cf8f..9649120 100644 (file)
@@ -1,22 +1,39 @@
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
 #ifndef lint
 #ifndef lint
-static char *sccsid = "@(#)wwsuspend.c 1.4 83/07/22";
-#endif
+static char sccsid[] = "@(#)wwsuspend.c        3.9 (Berkeley) %G%";
+#endif /* not lint */
 
 #include "ww.h"
 
 #include "ww.h"
-#include <signal.h>
-
-#define mask(s)        (1<<(SIG/**/s-1))
+#include "tt.h"
+#include <sys/signal.h>
 
 wwsuspend()
 {
 
 wwsuspend()
 {
-       int oldmask;
+       int (*oldsig)();
 
 
-       oldmask = sigblock(mask(TSTP));
+       oldsig = signal(SIGTSTP, SIG_IGN);
        wwend();
        wwend();
-       sigsetmask(sigblock(0) & ~mask(TSTP));
-       kill(0, SIGTSTP);
-       sigblock(mask(TSTP));
-       wwsettty(0, &wwnewtty);
-       Winit(2, 1);
-       sigsetmask(oldmask);
+       (void) signal(SIGTSTP, SIG_DFL);
+       (void) kill(0, SIGTSTP);
+       (void) signal(SIGTSTP, SIG_IGN);
+       (void) wwsettty(0, &wwnewtty, &wwoldtty);
+       (*tt.tt_init)();
+       wwredraw();
+       (void) signal(SIGTSTP, oldsig);
 }
 }