1*6acf840eSmestre /* $OpenBSD: hack.ioctl.c,v 1.10 2016/01/09 21:54:11 mestre Exp $ */
2d0b779f3Sniklas
3df930be7Sderaadt /*
4d25013f2Scamield * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
5d25013f2Scamield * Amsterdam
6d25013f2Scamield * All rights reserved.
7d25013f2Scamield *
8d25013f2Scamield * Redistribution and use in source and binary forms, with or without
9d25013f2Scamield * modification, are permitted provided that the following conditions are
10d25013f2Scamield * met:
11d25013f2Scamield *
12d25013f2Scamield * - Redistributions of source code must retain the above copyright notice,
13d25013f2Scamield * this list of conditions and the following disclaimer.
14d25013f2Scamield *
15d25013f2Scamield * - Redistributions in binary form must reproduce the above copyright
16d25013f2Scamield * notice, this list of conditions and the following disclaimer in the
17d25013f2Scamield * documentation and/or other materials provided with the distribution.
18d25013f2Scamield *
19d25013f2Scamield * - Neither the name of the Stichting Centrum voor Wiskunde en
20d25013f2Scamield * Informatica, nor the names of its contributors may be used to endorse or
21d25013f2Scamield * promote products derived from this software without specific prior
22d25013f2Scamield * written permission.
23d25013f2Scamield *
24d25013f2Scamield * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
25d25013f2Scamield * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26d25013f2Scamield * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
27d25013f2Scamield * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
28d25013f2Scamield * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29d25013f2Scamield * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30d25013f2Scamield * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31d25013f2Scamield * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32d25013f2Scamield * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33d25013f2Scamield * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34d25013f2Scamield * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35d25013f2Scamield */
36d25013f2Scamield
37d25013f2Scamield /*
38d25013f2Scamield * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
39d25013f2Scamield * All rights reserved.
40d25013f2Scamield *
41d25013f2Scamield * Redistribution and use in source and binary forms, with or without
42d25013f2Scamield * modification, are permitted provided that the following conditions
43d25013f2Scamield * are met:
44d25013f2Scamield * 1. Redistributions of source code must retain the above copyright
45d25013f2Scamield * notice, this list of conditions and the following disclaimer.
46d25013f2Scamield * 2. Redistributions in binary form must reproduce the above copyright
47d25013f2Scamield * notice, this list of conditions and the following disclaimer in the
48d25013f2Scamield * documentation and/or other materials provided with the distribution.
49d25013f2Scamield * 3. The name of the author may not be used to endorse or promote products
50d25013f2Scamield * derived from this software without specific prior written permission.
51d25013f2Scamield *
52d25013f2Scamield * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
53d25013f2Scamield * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
54d25013f2Scamield * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
55d25013f2Scamield * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
56d25013f2Scamield * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
57d25013f2Scamield * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
58d25013f2Scamield * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
59d25013f2Scamield * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
60d25013f2Scamield * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
61d25013f2Scamield * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62df930be7Sderaadt */
63df930be7Sderaadt
64df930be7Sderaadt /* This cannot be part of hack.tty.c (as it was earlier) since on some
65df930be7Sderaadt systems (e.g. MUNIX) the include files <termio.h> and <sgtty.h>
66df930be7Sderaadt define the same constants, and the C preprocessor complains. */
67df930be7Sderaadt #include <stdio.h>
68df930be7Sderaadt #include <termios.h>
69aed906e4Smestre
7023d7e0c8Stb #include "hack.h"
71aed906e4Smestre
72df930be7Sderaadt struct termios termios;
73df930be7Sderaadt
744a5fbbc4Spjanzen void
getioctls(void)75aed906e4Smestre getioctls(void)
764a5fbbc4Spjanzen {
77df930be7Sderaadt (void) tcgetattr(fileno(stdin), &termios);
78df930be7Sderaadt }
79df930be7Sderaadt
804a5fbbc4Spjanzen void
setioctls(void)81aed906e4Smestre setioctls(void)
824a5fbbc4Spjanzen {
83df930be7Sderaadt (void) tcsetattr(fileno(stdin), TCSADRAIN, &termios);
84df930be7Sderaadt }
85df930be7Sderaadt
860afc0f96Sderaadt #ifdef SUSPEND
87df930be7Sderaadt #include <signal.h>
884a5fbbc4Spjanzen int
dosuspend(void)89aed906e4Smestre dosuspend(void)
904a5fbbc4Spjanzen {
91df930be7Sderaadt #ifdef SIGTSTP
92df930be7Sderaadt if(signal(SIGTSTP, SIG_IGN) == SIG_DFL) {
93*6acf840eSmestre settty(NULL);
94df930be7Sderaadt (void) signal(SIGTSTP, SIG_DFL);
95df930be7Sderaadt (void) kill(0, SIGTSTP);
96df930be7Sderaadt gettty();
97df930be7Sderaadt setftty();
98df930be7Sderaadt docrt();
99df930be7Sderaadt } else {
100df930be7Sderaadt pline("I don't think your shell has job control.");
101df930be7Sderaadt }
10254da88e4Spjanzen #else /* SIGTSTP */
103df930be7Sderaadt pline("Sorry, it seems we have no SIGTSTP here. Try ! or S.");
10454da88e4Spjanzen #endif /* SIGTSTP */
105df930be7Sderaadt return(0);
106df930be7Sderaadt }
10754da88e4Spjanzen #endif /* SUSPEND */
108