summaryrefslogtreecommitdiffstats
path: root/lib/libcurses/tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libcurses/tty.c')
-rw-r--r--lib/libcurses/tty.c286
1 files changed, 0 insertions, 286 deletions
diff --git a/lib/libcurses/tty.c b/lib/libcurses/tty.c
deleted file mode 100644
index 8265881..0000000
--- a/lib/libcurses/tty.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef lint
-static char sccsid[] = "@(#)tty.c 8.4 (Berkeley) 5/18/94";
-#endif /* not lint */
-
-#include <termios.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#include "curses.h"
-
-/*
- * In general, curses should leave tty hardware settings alone (speed, parity,
- * word size). This is most easily done in BSD by using TCSASOFT on all
- * tcsetattr calls. On other systems, it would be better to get and restore
- * those attributes at each change, or at least when stopped and restarted.
- * See also the comments in getterm().
- */
-#ifdef TCSASOFT
-int __tcaction = 1; /* Ignore hardware settings. */
-#else
-int __tcaction = 0;
-#endif
-
-int __tty_fileno, __noterm = 0;
-struct termios __orig_termios, __baset;
-static struct termios cbreakt, rawt, *curt;
-static int useraw;
-
-#ifndef OXTABS
-#ifdef XTABS /* SMI uses XTABS. */
-#define OXTABS XTABS
-#else
-#define OXTABS 0
-#endif
-#endif
-
-/*
- * gettmode --
- * Do terminal type initialization.
- */
-int
-gettmode()
-{
- useraw = 0;
-
- if (tcgetattr(__tty_fileno = STDIN_FILENO, &__orig_termios))
- if (tcgetattr(__tty_fileno = STDOUT_FILENO, &__orig_termios))
- __noterm = 1;
-
- __baset = __orig_termios;
- __baset.c_oflag &= ~OXTABS;
-
- GT = 0; /* historical. was used before we wired OXTABS off */
- NONL = (__baset.c_oflag & ONLCR) == 0;
-
- /*
- * XXX
- * System V and SMI systems overload VMIN and VTIME, such that
- * VMIN is the same as the VEOF element, and VTIME is the same
- * as the VEOL element. This means that, if VEOF was ^D, the
- * default VMIN is 4. Majorly stupid.
- */
- cbreakt = __baset;
- cbreakt.c_lflag &= ~ICANON;
- cbreakt.c_cc[VMIN] = 1;
- cbreakt.c_cc[VTIME] = 0;
-
- rawt = cbreakt;
- rawt.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|INLCR|IGNCR|ICRNL|IXON);
- rawt.c_oflag &= ~OPOST;
- rawt.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
-
- /*
- * In general, curses should leave hardware-related settings alone.
- * This includes parity and word size. Older versions set the tty
- * to 8 bits, no parity in raw(), but this is considered to be an
- * artifact of the old tty interface. If it's desired to change
- * parity and word size, the TCSASOFT bit has to be removed from the
- * calls that switch to/from "raw" mode.
- */
- if (!__tcaction) {
- rawt.c_iflag &= ~ISTRIP;
- rawt.c_cflag &= ~(CSIZE|PARENB);
- rawt.c_cflag |= CS8;
- }
-
- curt = &__baset;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
- return OK;
-}
-
-int
-raw()
-{
- useraw = __pfast = __rawmode = 1;
- curt = &rawt;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-noraw()
-{
- useraw = __pfast = __rawmode = 0;
- curt = &__baset;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-cbreak()
-{
-
- __rawmode = 1;
- curt = useraw ? &rawt : &cbreakt;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-nocbreak()
-{
-
- __rawmode = 0;
- curt = useraw ? &rawt : &__baset;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-echo()
-{
- rawt.c_lflag |= ECHO;
- cbreakt.c_lflag |= ECHO;
- __baset.c_lflag |= ECHO;
-
- __echoit = 1;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-noecho()
-{
- rawt.c_lflag &= ~ECHO;
- cbreakt.c_lflag &= ~ECHO;
- __baset.c_lflag &= ~ECHO;
-
- __echoit = 0;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-nl()
-{
- rawt.c_iflag |= ICRNL;
- rawt.c_oflag |= ONLCR;
- cbreakt.c_iflag |= ICRNL;
- cbreakt.c_oflag |= ONLCR;
- __baset.c_iflag |= ICRNL;
- __baset.c_oflag |= ONLCR;
-
- __pfast = __rawmode;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-int
-nonl()
-{
- rawt.c_iflag &= ~ICRNL;
- rawt.c_oflag &= ~ONLCR;
- cbreakt.c_iflag &= ~ICRNL;
- cbreakt.c_oflag &= ~ONLCR;
- __baset.c_iflag &= ~ICRNL;
- __baset.c_oflag &= ~ONLCR;
-
- __pfast = 1;
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, curt) ? ERR : OK);
-}
-
-void
-__startwin()
-{
- (void)fflush(stdout);
- (void)setvbuf(stdout, NULL, _IOFBF, 0);
-
- tputs(TI, 0, __cputchar);
- tputs(VS, 0, __cputchar);
- if (curscr != NULL && __usecs)
- __set_scroll_region(0, curscr->maxy - 1, 0, 0);
-}
-
-void
-__set_scroll_region(top, bot, ox, oy)
-int top, bot, ox, oy;
-{
- if (SC != NULL && RC != NULL)
- tputs(SC, 0, __cputchar);
- tputs(__tscroll(CS, top, bot), 1, __cputchar);
- if (SC != NULL && RC != NULL)
- tputs(RC, 0, __cputchar);
- else {
- tputs(HO, 1, __cputchar);
- __mvcur(0, 0, oy, ox, 1);
- }
-}
-
-int
-endwin()
-{
- __restore_stophandler();
-
- if (curscr != NULL) {
- if (curscr->flags & __WSTANDOUT) {
- tputs(SE, 0, __cputchar);
- curscr->flags &= ~__WSTANDOUT;
- }
- if (__usecs)
- __set_scroll_region(0, curscr->maxy - 1, 0, 0);
- __mvcur(curscr->curx, curscr->cury, curscr->maxy - 1, 0, 0);
- }
-
- (void)tputs(VE, 0, __cputchar);
- (void)tputs(TE, 0, __cputchar);
- (void)fflush(stdout);
- (void)setvbuf(stdout, NULL, _IOLBF, 0);
-
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, &__orig_termios) ? ERR : OK);
-}
-
-/*
- * The following routines, savetty and resetty are completely useless and
- * are left in only as stubs. If people actually use them they will almost
- * certainly screw up the state of the world.
- */
-static struct termios savedtty;
-int
-savetty()
-{
- return (!__noterm && tcgetattr(__tty_fileno, &savedtty) ? ERR : OK);
-}
-
-int
-resetty()
-{
- return (!__noterm && tcsetattr(__tty_fileno, __tcaction ?
- TCSASOFT | TCSADRAIN : TCSADRAIN, &savedtty) ? ERR : OK);
-}
OpenPOWER on IntegriCloud