xref: /dragonfly/games/hack/hack.ioctl.c (revision 5dfd06ac)
1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* hack.ioctl.c - version 1.0.2 */
3 /* $FreeBSD: src/games/hack/hack.ioctl.c,v 1.2 1999/09/12 07:01:23 marcel Exp $
4    $DragonFly: src/games/hack/hack.ioctl.c,v 1.4 2006/08/21 19:45:32 pavalos Exp $
5 
6    This cannot be part of hack.tty.c (as it was earlier) since on some
7    systems (e.g. MUNIX) the include files <termio.h> and <sgtty.h>
8    define the same constants, and the C preprocessor complains. */
9 #include "hack.h"
10 #ifdef BSD
11 #include	<sgtty.h>
12 struct ltchars ltchars, ltchars0;
13 #else
14 #include	<termio.h>	/* also includes part of <sgtty.h> */
15 struct termio termio;
16 #endif /* BSD */
17 
18 void
19 getioctls(void)
20 {
21 #ifdef BSD
22 	ioctl(fileno(stdin), (int) TIOCGLTC, (char *) &ltchars);
23 	ioctl(fileno(stdin), (int) TIOCSLTC, (char *) &ltchars0);
24 #else
25 	ioctl(fileno(stdin), (int) TCGETA, &termio);
26 #endif /* BSD */
27 }
28 
29 void
30 setioctls(void)
31 {
32 #ifdef BSD
33 	ioctl(fileno(stdin), (int) TIOCSLTC, (char *) &ltchars);
34 #else
35 	ioctl(fileno(stdin), (int) TCSETA, &termio);
36 #endif /* BSD */
37 }
38 
39 #ifdef SUSPEND		/* implies BSD */
40 #include	<signal.h>
41 int
42 dosuspend(void)
43 {
44 #ifdef SIGTSTP
45 	if(signal(SIGTSTP, SIG_IGN) == SIG_DFL) {
46 		settty((char *) 0);
47 		signal(SIGTSTP, SIG_DFL);
48 		kill(0, SIGTSTP);
49 		gettty();
50 		setftty();
51 		docrt();
52 	} else {
53 		pline("I don't think your shell has job control.");
54 	}
55 #else /* SIGTSTP */
56 	pline("Sorry, it seems we have no SIGTSTP here. Try ! or S.");
57 #endif /* SIGTSTP */
58 	return(0);
59 }
60 #endif /* SUSPEND */
61