X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_raw.c;h=6df95714a9b17923872ec8a6e2e6cbec4ecbb965;hb=c633e5103a29a38532cf1925257b91cea33fd090;hp=61b422c1fb885a1c366e184a9e62f7ba3e89afa4;hpb=0eb88fc5281804773e2a0c7a488a4452463535ce;p=ncurses.git diff --git a/ncurses/tinfo/lib_raw.c b/ncurses/tinfo/lib_raw.c index 61b422c1..6df95714 100644 --- a/ncurses/tinfo/lib_raw.c +++ b/ncurses/tinfo/lib_raw.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998 Free Software Foundation, Inc. * + * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -31,7 +31,6 @@ * and: Eric S. Raymond * ****************************************************************************/ - /* * raw.c * @@ -47,21 +46,20 @@ */ #include -#include /* cur_term */ +#include /* cur_term */ -MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $") +MODULE_ID("$Id: lib_raw.c,v 1.8 2000/09/02 18:08:48 tom Exp $") -#if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE) +#if SVR4_TERMIO && !defined(_POSIX_SOURCE) #define _POSIX_SOURCE #endif #if HAVE_SYS_TERMIO_H -#include /* needed for ISC */ +#include /* needed for ISC */ #endif #ifdef __EMX__ #include -#include #endif #define COOKED_INPUT (IXON|BRKINT|PARMRK) @@ -74,160 +72,165 @@ MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $") #define AFTER(s) #endif /* TRACE */ -int raw(void) +int +raw(void) { - T((T_CALLED("raw()"))); - if (SP != 0 && cur_term != 0) { + T((T_CALLED("raw()"))); + if (SP != 0 && cur_term != 0) { - SP->_raw = TRUE; - SP->_cbreak = 1; + SP->_raw = TRUE; + SP->_cbreak = 1; #ifdef __EMX__ - setmode(SP->_ifd, O_BINARY); + setmode(SP->_ifd, O_BINARY); #endif #ifdef TERMIOS - BEFORE("raw"); - cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG); - cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT); - cur_term->Nttyb.c_cc[VMIN] = 1; - cur_term->Nttyb.c_cc[VTIME] = 0; - AFTER("raw"); + BEFORE("raw"); + cur_term->Nttyb.c_lflag &= ~(ICANON | ISIG | IEXTEN); + cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT); + cur_term->Nttyb.c_cc[VMIN] = 1; + cur_term->Nttyb.c_cc[VTIME] = 0; + AFTER("raw"); #else - cur_term->Nttyb.sg_flags |= RAW; + cur_term->Nttyb.sg_flags |= RAW; #endif - returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); - } - returnCode(ERR); + returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); + } + returnCode(ERR); } -int cbreak(void) +int +cbreak(void) { - T((T_CALLED("cbreak()"))); + T((T_CALLED("cbreak()"))); - SP->_cbreak = 1; + SP->_cbreak = 1; #ifdef __EMX__ - setmode(SP->_ifd, O_BINARY); + setmode(SP->_ifd, O_BINARY); #endif #ifdef TERMIOS - BEFORE("cbreak"); - cur_term->Nttyb.c_lflag &= ~ICANON; - cur_term->Nttyb.c_iflag &= ~ICRNL; - cur_term->Nttyb.c_lflag |= ISIG; - cur_term->Nttyb.c_cc[VMIN] = 1; - cur_term->Nttyb.c_cc[VTIME] = 0; - AFTER("cbreak"); + BEFORE("cbreak"); + cur_term->Nttyb.c_lflag &= ~ICANON; + cur_term->Nttyb.c_iflag &= ~ICRNL; + cur_term->Nttyb.c_lflag |= ISIG; + cur_term->Nttyb.c_cc[VMIN] = 1; + cur_term->Nttyb.c_cc[VTIME] = 0; + AFTER("cbreak"); #else - cur_term->Nttyb.sg_flags |= CBREAK; + cur_term->Nttyb.sg_flags |= CBREAK; #endif - returnCode(_nc_set_tty_mode( &cur_term->Nttyb)); + returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } -void qiflush(void) +void +qiflush(void) { - T((T_CALLED("qiflush()"))); + T((T_CALLED("qiflush()"))); - /* - * Note: this implementation may be wrong. See the comment under - * intrflush(). - */ + /* + * Note: this implementation may be wrong. See the comment under + * intrflush(). + */ #ifdef TERMIOS - BEFORE("qiflush"); - cur_term->Nttyb.c_lflag &= ~(NOFLSH); - AFTER("qiflush"); - (void)_nc_set_tty_mode( &cur_term->Nttyb); - returnVoid; + BEFORE("qiflush"); + cur_term->Nttyb.c_lflag &= ~(NOFLSH); + AFTER("qiflush"); + (void) _nc_set_tty_mode(&cur_term->Nttyb); + returnVoid; #endif } - -int noraw(void) +int +noraw(void) { - T((T_CALLED("noraw()"))); + T((T_CALLED("noraw()"))); - SP->_raw = FALSE; - SP->_cbreak = 0; + SP->_raw = FALSE; + SP->_cbreak = 0; #ifdef __EMX__ - setmode(SP->_ifd, O_TEXT); + setmode(SP->_ifd, O_TEXT); #endif #ifdef TERMIOS - BEFORE("noraw"); - cur_term->Nttyb.c_lflag |= ISIG|ICANON; - cur_term->Nttyb.c_iflag |= COOKED_INPUT; - AFTER("noraw"); + BEFORE("noraw"); + cur_term->Nttyb.c_lflag |= ISIG | ICANON | + (cur_term->Ottyb.c_lflag & IEXTEN); + cur_term->Nttyb.c_iflag |= COOKED_INPUT; + AFTER("noraw"); #else - cur_term->Nttyb.sg_flags &= ~(RAW|CBREAK); + cur_term->Nttyb.sg_flags &= ~(RAW | CBREAK); #endif - returnCode(_nc_set_tty_mode( &cur_term->Nttyb)); + returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } - -int nocbreak(void) +int +nocbreak(void) { - T((T_CALLED("nocbreak()"))); + T((T_CALLED("nocbreak()"))); - SP->_cbreak = 0; + SP->_cbreak = 0; #ifdef __EMX__ - setmode(SP->_ifd, O_TEXT); + setmode(SP->_ifd, O_TEXT); #endif #ifdef TERMIOS - BEFORE("nocbreak"); - cur_term->Nttyb.c_lflag |= ICANON; - cur_term->Nttyb.c_iflag |= ICRNL; - AFTER("nocbreak"); + BEFORE("nocbreak"); + cur_term->Nttyb.c_lflag |= ICANON; + cur_term->Nttyb.c_iflag |= ICRNL; + AFTER("nocbreak"); #else - cur_term->Nttyb.sg_flags &= ~CBREAK; + cur_term->Nttyb.sg_flags &= ~CBREAK; #endif - returnCode(_nc_set_tty_mode( &cur_term->Nttyb)); + returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); } -void noqiflush(void) +void +noqiflush(void) { - T((T_CALLED("noqiflush()"))); + T((T_CALLED("noqiflush()"))); - /* - * Note: this implementation may be wrong. See the comment under - * intrflush(). - */ + /* + * Note: this implementation may be wrong. See the comment under + * intrflush(). + */ #ifdef TERMIOS - BEFORE("noqiflush"); - cur_term->Nttyb.c_lflag |= NOFLSH; - AFTER("noqiflush"); - (void)_nc_set_tty_mode( &cur_term->Nttyb); - returnVoid; + BEFORE("noqiflush"); + cur_term->Nttyb.c_lflag |= NOFLSH; + AFTER("noqiflush"); + (void) _nc_set_tty_mode(&cur_term->Nttyb); + returnVoid; #endif } -int intrflush(WINDOW *win GCC_UNUSED, bool flag) +int +intrflush(WINDOW *win GCC_UNUSED, bool flag) { - T((T_CALLED("intrflush(%d)"), flag)); + T((T_CALLED("intrflush(%d)"), flag)); - /* - * This call does the same thing as the qiflush()/noqiflush() - * pair. We know for certain that SVr3 intrflush() tweaks the - * NOFLSH bit; on the other hand, the match (in the SVr4 man - * pages) between the language describing NOFLSH in termio(7) - * and the language describing qiflush()/noqiflush() in - * curs_inopts(3x) is too exact to be coincidence. - */ + /* + * This call does the same thing as the qiflush()/noqiflush() pair. We + * know for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the + * other hand, the match (in the SVr4 man pages) between the language + * describing NOFLSH in termio(7) and the language describing + * qiflush()/noqiflush() in curs_inopts(3x) is too exact to be coincidence. + */ #ifdef TERMIOS - BEFORE("intrflush"); - if (flag) - cur_term->Nttyb.c_lflag &= ~(NOFLSH); - else - cur_term->Nttyb.c_lflag |= (NOFLSH); - AFTER("intrflush"); - returnCode(_nc_set_tty_mode( &cur_term->Nttyb)); + BEFORE("intrflush"); + if (flag) + cur_term->Nttyb.c_lflag &= ~(NOFLSH); + else + cur_term->Nttyb.c_lflag |= (NOFLSH); + AFTER("intrflush"); + returnCode(_nc_set_tty_mode(&cur_term->Nttyb)); #else - returnCode(ERR); + returnCode(ERR); #endif }