summaryrefslogtreecommitdiff
path: root/lib/libcurses/setterm.c
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>1994-08-28 21:47:13 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>1994-08-28 21:47:13 +0000
commitf20105311324cd9998979d6302c79f7b6dc1879f (patch)
tree15d0f287c735370d7c344c86a8addbbf04e4b2a5 /lib/libcurses/setterm.c
parentc69d09e4359180c046b109e2084de520486fdaf8 (diff)
Notes
Diffstat (limited to 'lib/libcurses/setterm.c')
-rw-r--r--lib/libcurses/setterm.c42
1 files changed, 39 insertions, 3 deletions
diff --git a/lib/libcurses/setterm.c b/lib/libcurses/setterm.c
index 1d134903c112..ab84e9db4965 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);