xref: /dragonfly/games/hack/hack.ioctl.c (revision b40e316c)
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.3 2004/11/06 12:29:17 eirikn 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 <stdio.h>
10 #include "config.h"
11 #ifdef BSD
12 #include	<sgtty.h>
13 struct ltchars ltchars, ltchars0;
14 #else
15 #include	<termio.h>	/* also includes part of <sgtty.h> */
16 struct termio termio;
17 #endif /* BSD */
18 
19 getioctls() {
20 #ifdef BSD
21 	(void) ioctl(fileno(stdin), (int) TIOCGLTC, (char *) &ltchars);
22 	(void) ioctl(fileno(stdin), (int) TIOCSLTC, (char *) &ltchars0);
23 #else
24 	(void) ioctl(fileno(stdin), (int) TCGETA, &termio);
25 #endif /* BSD */
26 }
27 
28 setioctls() {
29 #ifdef BSD
30 	(void) ioctl(fileno(stdin), (int) TIOCSLTC, (char *) &ltchars);
31 #else
32 	(void) ioctl(fileno(stdin), (int) TCSETA, &termio);
33 #endif /* BSD */
34 }
35 
36 #ifdef SUSPEND		/* implies BSD */
37 #include	<signal.h>
38 dosuspend() {
39 #ifdef SIGTSTP
40 	if(signal(SIGTSTP, SIG_IGN) == SIG_DFL) {
41 		settty((char *) 0);
42 		(void) signal(SIGTSTP, SIG_DFL);
43 		(void) kill(0, SIGTSTP);
44 		gettty();
45 		setftty();
46 		docrt();
47 	} else {
48 		pline("I don't think your shell has job control.");
49 	}
50 #else /* SIGTSTP */
51 	pline("Sorry, it seems we have no SIGTSTP here. Try ! or S.");
52 #endif /* SIGTSTP */
53 	return(0);
54 }
55 #endif /* SUSPEND */
56