diff options
Diffstat (limited to 'lib/libcurses/setterm.c')
-rw-r--r-- | lib/libcurses/setterm.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/lib/libcurses/setterm.c b/lib/libcurses/setterm.c index 1d13490..ab84e9d 100644 --- a/lib/libcurses/setterm.c +++ b/lib/libcurses/setterm.c @@ -44,6 +44,9 @@ static char sccsid[] = "@(#)setterm.c 8.7 (Berkeley) 7/27/94"; #include "curses.h" +#undef ospeed +extern short ospeed; + static void zap __P((void)); static char *sflags[] = { @@ -151,13 +154,46 @@ setterm(type) CA = 1; PC = _PC ? _PC[0] : 0; + + switch(cfgetospeed(&__baset)) { + case B0: ospeed = 0; break; + case B50: ospeed = 1; break; + case B75: ospeed = 2; break; + case B110: ospeed = 3; break; + case B134: ospeed = 4; break; + case B150: ospeed = 5; break; + case B200: ospeed = 6; break; + case B300: ospeed = 7; break; + case B600: ospeed = 8; break; + case B1200: ospeed = 9; break; + case B1800: ospeed = 10; break; + case B2400: ospeed = 11; break; + case B4800: ospeed = 12; break; + case B9600: ospeed = 13; break; +#ifdef EXTA + case EXTA: ospeed = 14; break; +#endif +#ifdef EXTB + case EXTB: ospeed = 15; break; +#endif +#ifdef B57600 + case B57600: ospeed = 16; break; +#endif +#ifdef B115200 + case B115200: ospeed = 17; break; +#endif + } + aoftspace = tspace; ttytype = longname(genbuf, __ttytype); + __usecs = + (AL == NULL && al == NULL || DL == NULL && dl == NULL) && + !NS && (SC != NULL && RC != NULL || HO != NULL) && + CS != NULL && (SR != NULL || sr != NULL); + /* If no scrolling commands, no quick change. */ - __noqch = - (CS == NULL || HO == NULL || - SF == NULL && sf == NULL || SR == NULL && sr == NULL) && + __noqch = !__usecs && (AL == NULL && al == NULL || DL == NULL && dl == NULL); return (unknown ? ERR : OK); |