]>
git.ipfire.org Git - thirdparty/bash.git/blob - include/shtty.h
1 /* Copyright (C) 1999 Free Software Foundation, Inc. */
3 /* This file is part of GNU Bash, the Bourne Again SHell.
5 Bash is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 Bash is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with Bash. If not, see <http://www.gnu.org/licenses/>.
20 * shtty.h -- include the correct system-dependent files to manipulate the
29 #if defined (_POSIX_VERSION) && defined (HAVE_TERMIOS_H) && defined (HAVE_TCGETATTR) && !defined (TERMIOS_MISSING)
30 # define TERMIOS_TTY_DRIVER
32 # if defined (HAVE_TERMIO_H)
33 # define TERMIO_TTY_DRIVER
35 # define NEW_TTY_DRIVER
40 * The _POSIX_SOURCE define is to avoid multiple symbol definitions
41 * between sys/ioctl.h and termios.h. Ditto for the test against SunOS4
42 * and the undefining of several symbols.
45 #ifdef TERMIOS_TTY_DRIVER
46 # if (defined (SunOS4) || defined (SunOS5)) && !defined (_POSIX_SOURCE)
47 # define _POSIX_SOURCE
55 # define TTYSTRUCT struct termios
57 # ifdef TERMIO_TTY_DRIVER
59 # define TTYSTRUCT struct termio
60 # else /* NEW_TTY_DRIVER */
62 # define TTYSTRUCT struct sgttyb
66 /* Functions imported from lib/sh/shtty.c */
68 /* Get and set terminal attributes for the file descriptor passed as
70 extern int ttgetattr
__P((int, TTYSTRUCT
*));
71 extern int ttsetattr
__P((int, TTYSTRUCT
*));
73 /* Save and restore the terminal's attributes from static storage. */
74 extern void ttsave
__P((void));
75 extern void ttrestore
__P((void));
77 /* Return the attributes corresponding to the file descriptor (0 or 1)
78 passed as an argument. */
79 extern TTYSTRUCT
*ttattr
__P((int));
81 /* These functions only operate on the passed TTYSTRUCT; they don't
82 actually change anything with the kernel's current tty settings. */
83 extern int tt_setonechar
__P((TTYSTRUCT
*));
84 extern int tt_setnoecho
__P((TTYSTRUCT
*));
85 extern int tt_seteightbit
__P((TTYSTRUCT
*));
86 extern int tt_setnocanon
__P((TTYSTRUCT
*));
87 extern int tt_setcbreak
__P((TTYSTRUCT
*));
89 /* These functions are all generally mutually exclusive. If you call
90 more than one (bracketed with calls to ttsave and ttrestore, of
91 course), the right thing will happen, but more system calls will be
92 executed than absolutely necessary. You can do all of this yourself
93 with the other functions; these are only conveniences. */
95 /* These functions work with a given file descriptor and set terminal
97 extern int ttfd_onechar
__P((int, TTYSTRUCT
*));
98 extern int ttfd_noecho
__P((int, TTYSTRUCT
*));
99 extern int ttfd_eightbit
__P((int, TTYSTRUCT
*));
100 extern int ttfd_nocanon
__P((int, TTYSTRUCT
*));
102 extern int ttfd_cbreak
__P((int, TTYSTRUCT
*));
104 /* These functions work with fd 0 and the TTYSTRUCT saved with ttsave () */
105 extern int ttonechar
__P((void));
106 extern int ttnoecho
__P((void));
107 extern int tteightbit
__P((void));
108 extern int ttnocanon
__P((void));
110 extern int ttcbreak
__P((void));