aboutsummaryrefslogtreecommitdiff
path: root/hack/hack.ioctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'hack/hack.ioctl.c')
-rw-r--r--hack/hack.ioctl.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/hack/hack.ioctl.c b/hack/hack.ioctl.c
new file mode 100644
index 0000000..980755a
--- /dev/null
+++ b/hack/hack.ioctl.c
@@ -0,0 +1,47 @@
+/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
+/* hack.ioctl.c - version 1.0.2 */
+/* $FreeBSD: src/games/hack/hack.ioctl.c,v 1.2 1999/09/12 07:01:23 marcel Exp $
+ * $DragonFly: src/games/hack/hack.ioctl.c,v 1.4 2006/08/21 19:45:32 pavalos Exp $
+ *
+ * This cannot be part of hack.tty.c (as it was earlier) since on some
+ * systems (e.g. MUNIX) the include files <termio.h> and <sgtty.h> define the
+ * same constants, and the C preprocessor complains.
+ */
+#include "hack.h"
+#include <termios.h>
+struct termios termio;
+
+void
+getioctls(void)
+{
+ tcgetattr(fileno(stdin), &termio);
+}
+
+void
+setioctls(void)
+{
+ tcsetattr(fileno(stdin), TCSANOW, &termio);
+}
+
+#ifdef SUSPEND
+#include <signal.h>
+int
+dosuspend(void)
+{
+#ifdef SIGTSTP
+ if (signal(SIGTSTP, SIG_IGN) == SIG_DFL) {
+ settty(NULL);
+ signal(SIGTSTP, SIG_DFL);
+ kill(0, SIGTSTP);
+ gettty();
+ setftty();
+ docrt();
+ } else {
+ pline("I don't think your shell has job control.");
+ }
+#else /* SIGTSTP */
+ pline("Sorry, it seems we have no SIGTSTP here. Try ! or S.");
+#endif /* SIGTSTP */
+ return (0);
+}
+#endif /* SUSPEND */