diff options
Diffstat (limited to 'lib/libtermcap')
| -rw-r--r-- | lib/libtermcap/Makefile | 6 | ||||
| -rw-r--r-- | lib/libtermcap/termcap.3 | 12 | ||||
| -rw-r--r-- | lib/libtermcap/termcap.c | 30 | ||||
| -rw-r--r-- | lib/libtermcap/termcap.h | 6 | ||||
| -rw-r--r-- | lib/libtermcap/tgoto.c | 8 | ||||
| -rw-r--r-- | lib/libtermcap/tparm.c | 1 | ||||
| -rw-r--r-- | lib/libtermcap/tputs.c | 10 |
7 files changed, 45 insertions, 28 deletions
diff --git a/lib/libtermcap/Makefile b/lib/libtermcap/Makefile index 8c90c9d43146..5445de04f25d 100644 --- a/lib/libtermcap/Makefile +++ b/lib/libtermcap/Makefile @@ -3,8 +3,8 @@ LIB= termcap SHLIB_MAJOR= 2 SHLIB_MINOR= 1 -CFLAGS+=-DCM_N -DCM_GT -DCM_B -DCM_D -SRCS= termcap.c tgoto.c tputs.c tparm.c +CFLAGS+=-DCM_N -DCM_GT -DCM_B -DCM_D -I${.CURDIR} +SRCS= termcap.c tgoto.c tputs.c tparm.c tospeed.c MAN3= termcap.3 MLINKS= termcap.3 tgetent.3 termcap.3 tgetflag.3 termcap.3 tgetnum.3 \ @@ -21,7 +21,7 @@ LINKS+= ${LIBDIR}/libtermcap_p.a ${LIBDIR}/libtermlib_p.a beforeinstall: -cd ${.CURDIR}; cmp -s termcap.h ${DESTDIR}/usr/include/termcap.h || \ - install -c -o ${BINOWN} -g ${BINGRP} -m 444 termcap.h \ + ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 444 termcap.h \ ${DESTDIR}/usr/include .include <bsd.lib.mk> diff --git a/lib/libtermcap/termcap.3 b/lib/libtermcap/termcap.3 index 861bc2447bcc..3867f70bdd9f 100644 --- a/lib/libtermcap/termcap.3 +++ b/lib/libtermcap/termcap.3 @@ -41,7 +41,8 @@ .Nm tgetstr , .Nm tgoto , .Nm tputs , -.Nm tparm +.Nm tparm , +.Nm _set_ospeed .Nd terminal independent operation routines .Sh SYNOPSIS .Fd #include <termcap.h> @@ -63,6 +64,8 @@ .Fn tputs "const char *cp" "int affcnt" "int (*outc)(int)" .Ft char * .Fn tparm "const char *cp" "..." +.Ft void +.Fn _set_ospeed "long speed" .Sh DESCRIPTION These functions extract and use capabilities from a terminal capability data base, usually @@ -232,6 +235,13 @@ The external variable .Va ospeed should contain the output speed of the terminal as encoded by .Xr stty 3 . +The +.Fn _set_ospeed +functions converts any (not exactly matched only) numeric speed to +.Xr stty 3 +encoded speed and set +.Va ospeed +variable. The external variable .Va PC should contain a pad character to be used (from the diff --git a/lib/libtermcap/termcap.c b/lib/libtermcap/termcap.c index 38ae9da922bd..7f8d39d9031e 100644 --- a/lib/libtermcap/termcap.c +++ b/lib/libtermcap/termcap.c @@ -43,8 +43,13 @@ static char sccsid[] = "@(#)termcap.c 8.1 (Berkeley) 6/4/93"; #include <ctype.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> +#include <termios.h> +#include "termcap.h" #include "pathnames.h" +extern void __set_ospeed(speed_t speed); + /* * termcap - routines for dealing with the terminal capability data base * @@ -65,8 +70,7 @@ static char *tbuf; /* termcap buffer */ * Get an entry for terminal name in buffer bp from the termcap file. */ int -tgetent(bp, name) - char *bp, *name; +tgetent(char *bp, const char *name) { register char *p; register char *cp; @@ -78,6 +82,7 @@ tgetent(bp, name) char *pathvec[PVECSIZ]; /* to point to names in pathbuf */ char **pvec; /* holds usable tail of path vector */ char *termpath; + struct termios tty; dummy = NULL; fname = pathvec; @@ -130,7 +135,7 @@ tgetent(bp, name) if (cgetset(cp) < 0) return(-2); - i = cgetent(&dummy, pathvec, name); + i = cgetent(&dummy, pathvec, (char *)name); if (i == 0) { char *pd, *ps, *tok, *s, *tcs; @@ -180,6 +185,12 @@ tgetent(bp, name) } } done: + if ( i == 0 + && ( tcgetattr(STDERR_FILENO, &tty) != -1 + || tcgetattr(STDOUT_FILENO, &tty) != -1 + ) + ) + __set_ospeed(cfgetospeed(&tty)); if (dummy) free(dummy); /* no tc reference loop return code in libterm XXX */ @@ -197,12 +208,11 @@ done: * Note that we handle octal numbers beginning with 0. */ int -tgetnum(id) - char *id; +tgetnum(const char *id) { long num; - if (cgetnum(tbuf, id, &num) == 0) + if (cgetnum(tbuf, (char *)id, &num) == 0) return(num); else return(-1); @@ -215,10 +225,9 @@ tgetnum(id) * not given. */ int -tgetflag(id) - char *id; +tgetflag(const char *id) { - return(cgetcap(tbuf, id, ':') != NULL); + return(cgetcap(tbuf, (char *)id, ':') != NULL); } /* @@ -230,8 +239,7 @@ tgetflag(id) * No checking on area overflow. */ char * -tgetstr(id, area) - char *id, **area; +tgetstr(const char *id, char **area) { char ids[3]; char *s; diff --git a/lib/libtermcap/termcap.h b/lib/libtermcap/termcap.h index 7cd1f068a0b3..26ac71c58a6d 100644 --- a/lib/libtermcap/termcap.h +++ b/lib/libtermcap/termcap.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1994 by Andrew A. Chernov, Moscow, Russia. + * Copyright (C) 1994,1995 by Andrey A. Chernov, Moscow, Russia. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -14,7 +14,7 @@ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 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) @@ -24,7 +24,7 @@ * SUCH DAMAGE. */ -/* $Id: termcap.h,v 1.3 1994/12/09 21:55:52 ache Exp $ */ +/* $Id: termcap.h,v 1.6 1995/08/05 21:21:54 ache Exp $ */ #ifndef _TERMCAP_H_ #define _TERMCAP_H_ diff --git a/lib/libtermcap/tgoto.c b/lib/libtermcap/tgoto.c index c4dd9d7f43ca..e28a85cdfaad 100644 --- a/lib/libtermcap/tgoto.c +++ b/lib/libtermcap/tgoto.c @@ -35,6 +35,8 @@ static char sccsid[] = "@(#)tgoto.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ +#include "termcap.h" + #define CTRL(c) ((c) & 037) #define MAXRETURNSIZE 64 @@ -67,13 +69,11 @@ char *BC; * all other characters are ``self-inserting''. */ char * -tgoto(CM, destcol, destline) - char *CM; - int destcol, destline; +tgoto(const char *CM, int destcol, int destline) { static char result[MAXRETURNSIZE]; static char added[10]; - char *cp = CM; + const char *cp = CM; register char *dp = result; register int c; int oncol = 0; diff --git a/lib/libtermcap/tparm.c b/lib/libtermcap/tparm.c index 36070d962601..6a537ce4e90a 100644 --- a/lib/libtermcap/tparm.c +++ b/lib/libtermcap/tparm.c @@ -11,6 +11,7 @@ #include <stdarg.h> #include <stdio.h> #include <string.h> +#include "termcap.h" #ifdef USE_SCCS_IDS static const char SCCSid[] = "@(#) mytinfo tparm.c 3.2 92/02/01 public domain, By Ross Ridge"; diff --git a/lib/libtermcap/tputs.c b/lib/libtermcap/tputs.c index 857147d9283e..46b6dc28ce50 100644 --- a/lib/libtermcap/tputs.c +++ b/lib/libtermcap/tputs.c @@ -35,8 +35,8 @@ static char sccsid[] = "@(#)tputs.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ -#include <sgtty.h> #include <ctype.h> +#include "termcap.h" /* * The following array gives the number of tens of milliseconds per @@ -45,7 +45,8 @@ static char sccsid[] = "@(#)tputs.c 8.1 (Berkeley) 6/4/93"; */ static short tmspc10[] = { - 0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5 + 0, 2000, 1333, 909, 743, 666, 500, 333, 166, 83, 55, 41, 20, 10, 5, + 3, 2, 1 }; short ospeed; @@ -56,10 +57,7 @@ char PC; * The number of affected lines is affcnt, and the routine * used to output one character is outc. */ -tputs(cp, affcnt, outc) - register char *cp; - int affcnt; - int (*outc)(); +tputs(const char *cp, int affcnt, int (*outc)(int)) { register int i = 0; register int mspc10; |
